codeup27989 众数问题
时空限制 1000ms/128MB
题目描述
给出n个1到30000间无序的正整数,其中1<=n<=10000,同一个正整数可能会出现多次,出现次数最多的整数称为众数,众数出现的次数为其重数。求出序列中的所有众数和其重数。
输入
输入有2行
第一行是正整数n
第二行为n个正整数
输出
输出若干行,每行两个数,第一个数是众数,第二个数是其重数,中间用2个空格隔开。
众数由小到大输出。
样例输入
12
2 4 2 3 2 5 3 7 2 3 4 3
样例输出
2 4
3 4
代码
#include<iostream>
using namespace std;
const int N = 30005;
int n,a[N],maxv;
int main(){
cin>>n;
for (int i=1,x; i<=n; ++i){
cin>>x;
a[x]++; //a[x]存x出现次数
}
for (int i=1; i<=30000; ++i)
if (a[i]>maxv) maxv=a[i];
for (int i=1; i<=30000; ++i)
if (a[i]==maxv) cout<<i<<" "<<maxv<<endl;
return 0;
}