codevs4419 FFF 团卧底的菊花

题目描述 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;
}

 

posted @ 2016-09-08 11:13  ACforever  阅读(231)  评论(0编辑  收藏  举报