G - 众数问题
给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。
例如,S={1,2,2,2,3,5}。
多重集S的众数是2,其重数为3。
现在给你一个已经排好序的集合S,让你求出其众数和重数。
Input
输入只有一行,有一个整数n(1<=n<=100)开始,表示集合S中元素个数,接下来有n个由一个空格隔开的整数(-100~100), 为集合S的元素,元素从小到大或者从大到小给出。
Output
输出一行二个整数X和Y,X表示众数和Y为重数,用一个空格隔开。如果存在多个解,只需输出值最小的众数即可。
Sample Input
6 1 2 2 2 3 5 3 -1 -1 -1
Sample Output
2 3 -1 3
简单粗暴水题一个
但是由于也许是心情总是很乱,还是写错了一遍,也懒得优化到超级简了
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <stack>
#include <queue>
using namespace std;
int main()
{
int aft,n,mx,mxn,now,c;
while (~scanf("%d",&n)) {
scanf("%d",&aft);
mx = 1;
mxn = aft;
c = 1;
while (--n) {
scanf("%d",&now);
if (now == aft) {
c++;
}else {
if (c>mx || (c==mx&&aft<mxn) ) {
mxn = aft;
mx = c;
}
c=1;
}
aft = now;
}
if (c>mx || (c==mx&&aft<mxn) ) {
mxn = aft;
mx = c;
}
printf("%d %d\n",mxn,mx);
}
return 0;
}