英雄联盟总决赛正在若火如荼的展开,盲僧、刀妹、酒桶、青钢影等各路英雄悉数登场,当一个英雄被选出场时系统自动登记其序号,出场次数最多的英雄成为出场王。给定英雄序号的出场集合T,例如,T={2,4,4,4,6,7}。其出场王是4号英雄,出场次数为3。对于给定的由n个序号组成的出场集T,计算出场王序号及其出场次数。如果出现多个出场王,请输出序号最小的那个。 输入格式:输入数据的第1行是英雄出场集T中序号个数n(n<100000000);第二行输入n个出场英雄序号。 输出格式:输出数据的第1行给出出场王序号,第2行是出场次数。 |
输入样例1:
6
2 4 4 4 6 7
输出样例1:
4
3
输入样例2:
10
1234568 828 12345 898232689 12345 12345 9876 321 3 12345
输出样例2:
12345
4
考察 : map巧妙运用 |
注意 : 不能用数组 |
思路 : map->出现次数 |
C/C++
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
map<LL,LL> appear;
int main()
{
LL n,num,flag,maxNum=0;
cin >> n;
while (n--){
cin >> num;
appear[num]++;
if(appear[num]>maxNum || (appear[num]==maxNum && num<flag)){
maxNum = appear[num];
flag = num;
}
}
cout << flag << endl << maxNum << endl;
return 0;
}