给定含有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; }