比赛 noip2016普及练习2 评测结果
题目名称 谁是卧底 最终得分 0
用户昵称 God-Nan 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2016-11-07 20:49:34
显示代码纯文本
#include<cstdio>
#include<iostream>
using namespace std;
void cool(long long a);
void addpoint(int a,long long b);
long long n,wing,ans=-1;
int lz[110000],m,next[110000],modd=100007,star;
struct dota
{
	long long a,b;
}we[110000];
int main()
{
	freopen("leader.in","r",stdin);
	freopen("leader.out","w",stdout);
	int i,p,l;
	scanf("%lld%lld",&n,&m);
	
	for(i=0;i<=105000;i++)
	lz[i]=-1;
	
	
	for(i=1;i<=m;i++)
	{
		scanf("%lld",&wing);
        cool(wing);
    }
    
    for(i=0;i<=7;i++)
     {
     	p=lz[i];
     	while(p!=-1)
     	{
     	 if(we[p].b>m/2)
     	  ans=we[p].a;
     	  
		 p=next[p];	
     	}
     }
     printf("%lld",ans);
    return 0;
}
void cool(long long a)
{
	long long p;
	p=a;
   a=a%modd;
   int point;
   point=lz[a];
   while(point!=-1)
   {
   	if(we[point].a==p)
   	{
   	 we[point].b++;
   	 return ;
    }
   	point=next[point];
   }
   
    addpoint(a,p);
   return ;	
}
void addpoint(int a,long long b)
{
	we[++star].a=b;we[star].b=1;
	next[star]=lz[a];
	lz[a]=star;
	
	return ;
}