競プロ初心者です。AtCoderのABCコンテスト072 c問題 Togetherで
#問題文
長さNの整数列 a1,a2,...,aNが与えられます。
各1≤i≤Nに対し、aiに 1足すか、1引くか、なにもしないかの三つの操作からどれか一つを選んで行います。
この操作の後、ある整数 Xを選んで、ai=Xとなる iの個数を数えます。うまく操作を行い、Xを選ぶことで、この個数を最大化してください。
#制約
・1≤N≤10^5
・0≤ai<10^5(1≤i≤N)
・aiは整数
という問題で
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { int n; cin >> n; map<ll, ll> mp; for (int i = 0; i < n; i++) { int a; cin >> a; mp[a]++; mp[a-1]++; mp[a+1]++; } ll ans = 0; for (auto x : mp) { ans = max(ans, x.second); } cout << ans << endl; return 0; }
という解答があったのですがmap<ll, ll> mp;
が何をしているのか教えてください。mapというのはmap<key, value>
と書き、keyからvalueを検索するためのものだと思うのですが今回で言うと具体的にどんな操作をしているのか教えてくださると嬉しいです。よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/11 07:55
2020/04/11 14:01 編集
2020/04/11 14:10
2020/04/11 18:08
2020/04/12 11:44