Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Mode"
https://onlinejudge.u-aizu.ac.jp/problems/0668
長さ N の数列 A1,A2,…,AN が与えられる.
この数列の各項は 1 以上 M 以下の整数である.
長さ M の新たな数列 B1,B2,…,BM を以下のように定義する.
各 j (1≦j≦M) に対して,Bj の値は Ai=j を満たす整数 i (1≦i≦N) の個数に等しい.
B1,B2,…,BM の最大値を求めよ.
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #Volume6 - 0668 : Mode
/* Aizu Online Judge in C++ #Volume6 - 0668 : Mode https://onlinejudge.u-aizu.ac.jp/problems/0668 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m; cin>>n>>m; vector<int> a(n); for(int i=0;i<n;i++){ cin>>a[i]; } vector<int> b(m); for(int i=0;i<m;i++){ int cnt=0; for(int j=0;j<n;j++){ if(i+1==a[j]){ ++cnt; } } b[i]=cnt; } sort(b.rbegin(),b.rend()); cout<<b[0]<<endl; return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/