string s,f; map<string,int> M; set<pair<int,string> > S; while(cin >> s) { M[s]++; int x=M[s]; if(x>1) S.erase(make_pair(x-1,s)); S.insert(make_pair(x,s)); } set<pair<int,string> >::reverse_iterator it=S.rbegin(); int topK=10; while(topK-- && (it!=S.rend())) { cout << it->second<<" "<<it->first<<endl; it++; }
while (cin >> s) M[s]++; for (map<string,int>::iterator i = M.begin(); i != M.end(); i++) { S.insert(make_pair(i->second, i->first)); }