寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #Volume6 - 0668 : Mode

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/