B - 投票 / AtCoderBeginnerContest #008
#include <algorithm> #include <iostream> #include <map> #include <string> using namespace std; void Solve(int n) { map<string,int> data; string s; int max_name=0; data.clear(); for (int i=0; i<n; ++i) { cin >> s; if ( data.find(s) != data.end() ) max_name=max(max_name,++data[s]); else { max_name=max(max_name,1); data.insert( map<string,int>::value_type(s,1) ); } } for (map<string,int>::iterator it=data.begin(); it!=data.end(); ++it) if (max_name == it->second) { cout << it->first << endl; break; } } int main(void) { int n; cin >> n; Solve(n); return 0; }
最大値を覚えておいて、その値と等しい回数の文字列が出ている場合、
その文字列を出力する。
~了~