https://yukicoder.me/problems/no/706
解法
https://yukicoder.me/submissions/270303
まずは、全ての^の個数について何通りあるか数えよう。
cnt[i] := ^がi個続いている要素が何個あるか
mapを使って、これを予め計算しておく。
次は最も頻繁に出てくる数で、かつ^の個数が最も多いものを抽出したい。
これはpairをvectorに入れて降順ソートすることによって、解決した。
vector
firstに要素数、secondに^の個数を入れて降順ソートすれば最初の要素が答えとなる。
なので、これを用意して、ソートして、最初の要素のsecondを出力すれば答え。
int N; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; map<int, int> cnt; rep(i, 0, N) { string s; cin >> s; int n = s.length() - 2; cnt[n]++; } vector<pair<int, int>> v; fore(p, cnt) v.push_back({p.second, p.first}); sort(all(v), greater<pair<int,int>>()); int ans = v[0].second; cout << ans << endl; }