Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Mode Value"
https://onlinejudge.u-aizu.ac.jp/problems/0028
1〜100 の整数データを読みこんで、データの最頻値を出力するプログラムを作成してください。
複数ある場合は、値の小さい順に改行してすべて表示して下さい。
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #Volume0 - 0028 : Mode Value
/* Aizu Online Judge in C++ #Volume0 - 0028 : Mode Value https://onlinejudge.u-aizu.ac.jp/problems/0028 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ vector< pair<int,int> > v(100); for(int i=0;i<100;i++){ v[i].first=0; v[i].second=i+1; } while(1){ int n; cin>>n; if(cin.eof()){ break; } v[n-1].first+=1; v[n-1].second=n; } sort(v.rbegin(),v.rend()); vector<int> ans; ans.push_back(v[0].second); for(int i=1;i<100;i++){ if(v[i].first==v[0].first){ ans.push_back(v[i].second); }else{ break; } } sort(ans.begin(),ans.end()); for(int i=0;i<ans.size();i++){ cout<<ans[i]<<endl; } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/