Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Input Candidates"
https://onlinejudge.u-aizu.ac.jp/problems/0242
・入力候補
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #Volume2 : 0242 - Input Candidates
/* Aizu Online Judge in C++ #Volume2 : 0242 - Input Candidates https://onlinejudge.u-aizu.ac.jp/problems/0242 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll n;char c; string s,t; while(cin>>n,n){ getline(cin,s); map<char,map<string,ll> > m; for(ll i=0;i<n;i++){ string s,t; getline(cin,s); istringstream is(s); for(;is>>t;){ m[t[0]][t]--; } } cin>>c; vector<pair<ll,string> > v; map<string,ll>::iterator it=m[c].begin(); for(;it!=m[c].end();it++){ v.push_back(make_pair(it->second,it->first)); } sort(v.begin(),v.end()); if(v.empty()){ cout<<"NA\n"; }else{ for(ll i=0;i<5 && i<v.size();i++){ if(i){ cout<<" "; } cout<<v[i].second; } puts(""); } } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/