#include<stdio.h>
#include<string.h>
int str[1005000],s[1005000];
int main()
{
int n,i,k,max;
while(scanf("%d",&n)!=EOF)
{
memset(s,0,sizeof(s));
max=-1;
for(i=0;i<n;i++)
{
scanf("%d",&str[i]);
s[str[i]]++;
if(max<str[i])
max=str[i];
}
for(i=0;i<=max;i++)
if(s[i]>=(n+1)/2)
printf("%d\n",i);
}
return 0;
}
//RE
#include<stdio.h>
#include<string.h>
int s1[1000000],s2[1000000],s3[1000000];
int main()
{
int n;
int i,j,k,l,m;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&s1[i]);
s2[0]=s1[0];
k=1;
memset(s3,0,sizeof(s3));
for(i=1;i<n;i++)
{
for(j=0;j<k;j++)
{
//这两个循环有问题,位置反了
if(s1[i]==s2[j])
s3[j]++;
else
k++;
s2[k]=s1[i];
}
}
for(i=0;i<k;i++)
if(s3[i]>=(n+1)/2)
printf("%d\n",s2[i]);
}
return 0;
}
//超时,
#include<stdio.h>
#include<string.h>
int s1[1000000],s2[1000000];
int main()
{
int n;
int i,j,k,max;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&s1[i]);
max=0;
memset(s2,0,sizeof(s2));
for(i=1;i<n;i++)
if(max<s1[i])
{
j=max;
max=s1[i];
s1[i]=max;
}//将求最大值移到输入的时候就判断
for(i=0;i<=max;i++)
for(k=0;k<n;k++)
if(s1[k]==i)
s2[i]++;
for(i=0;i<=max;i++)
if(s2[i]>=(n+1)/2)
printf("%d\n",i);
}
return 0;
}