题目描述 Description
FFF 团卧底在这次出题后就知道他的菊花可能有巨大的危险,于是他提前摆布好了菊花阵,现在菊花阵里有若干朵菊花,出现次数最多的那一朵就是出题人的,你的任务是需要找出出题人的菊花。
输入描述 Input Description
第一行为 n
第二行为 n 朵菊花
输出描述 Output Description
一行,为出题人的菊花
样例输入 Sample Input
5
1 1 1 2 3
样例输出 Sample Output
1
数据范围及提示 Data Size & Hint
对于 100%的数据,n<=5000000,每个数都在 int 范围内,保证出题人的菊花出现的次数大于等于[n/2]
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<map> #include<vector> using namespace std; struct dat{ int pow; int id; dat(int pow,int id):pow(pow),id(id){} }; const long long sed = 31,Sed = 131,mod = 10007,Mod = 92311; long long big = 0,rec = 0,n; long long m,cmd; vector<dat> hash[mod]; inline int add(){ long long tmp = 0,Tmp = 0; tmp = (cmd*sed)%mod; Tmp = (cmd*Sed)%Mod; for(int i = 0;i < hash[tmp].size();i++){ if(hash[tmp][i].id == Tmp) return ++hash[tmp][i].pow; } hash[tmp].push_back(dat(1,Tmp)); return 1; } int main(){ cin>>n; for(int i = 1;i <= n;i++){ scanf("%d",&cmd); rec = add(); if(rec >= (n>>1)){ cout<<cmd; return 0; } } return 0; }