给定含有n各元素的多冲击和S,每个元素在S中出现的次数成为该元素的重数。多重集S中重数最大的元素称为众数。
Sample Input
6
1 2 2 2 3 4
Sample Output
2 3
#include <bits/stdc++.h>
using namespace std;
#define PB push_back
#define rep(i,a,b) for(int i=a,tt=b;i<=tt;++i)
#define drep(i,a,b) for(int i=a,tt=b;i>=tt;--i)
#define erep(i,e,x) for(int i=x;i;i=e[i].next)
#define irep(i,x) for(__typedef(x.begin()) i=x.begin();i!=x.end();i++)
//#define read() (strtol(ipos,&ipos,10))
#define sqr(x) ((x)*(x))
#define pb push_back
#define PS system("pause");
#define LL long long
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
//.......
const int maxn = 1e5+10;
int number[maxn];
int main()
{
#ifndef locol
freopen("众数问题输入.txt" , "r" , stdin);
freopen("众数问题输出.txt" , "w" , stdout);
#endif // locol
int n;
while(cin >> n)
{
// int n = read();
rep(i,1,n)number[i] = read();
sort(number + 1, number + 1 + n);
int Max_num = 1;
int Max_who = number[1];
int now_pos = 2;
while(now_pos <= n)
{
int sum = 1;
int who = number[now_pos];
while(number[now_pos-1] == number[now_pos])
{
now_pos++;
sum++;
}
now_pos++;
if(sum > Max_num)
{
Max_num = sum;
Max_who = who;
}
}
cout << Max_who << " " << Max_num << endl;
}
return 0;
}