很简单的一个DP题。。。
#include<stdio.h>
#include<string.h>#define N 1000000
int a[N],m[N],count[N];
int cmp(const void *a,const void *b)
{
return *(int *)a - *(int *)b;
}
int main()
{
int i,j,n;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
qsort(a,n,sizeof(a[0]),cmp);
m[0]=a[0]; j=0;
memset(count,0,sizeof(count));
for(i=0;i<n;i++){
if(a[i]!=m[j]){
j++;
count[j]++;
m[j]=a[i];
}
else count[j]++;
}
for(i=0;i<=j;i++){
if(count[i]>=(n+1)/2){
printf("%d\n",m[i]);
break;
}
}
}
system("pause");
return 0;
}