問題によると、要素が n/2 回以上発生するかどうかを調べ、それに応じて Yes または No を出力する必要があります。数値は 10^-3 から 10^3 までさまざまです。
配列 count[2005] を取得し、各入力に 1000 を追加して 10^-3 を 0 に等しくします。残りの要素。したがって、下限= -1000+1000=0; 上限= 1000+1000=2000;
しかし、それでもメモリアクセス違反が発生します。助けてください... 元の問題へのリンクは次のとおりです: http://www.spoj.com/problems/MAJOR/
#include<stdio.h>
int main()
{
int t,n,a,count[2005],max,check,temp;
scanf("%d",&t);
while(t--)
{
check=0;
scanf("%d",&n);
for(int i=0;i<2005;i++)
count[i]=0;
for(int i=0;i<n;i++)
{
scanf("%d",&a);
temp=a+1000;
count[temp]++;
if(count[temp]>(n/2))
{
check=1;
max=temp-1000;
break;
}
}
if(check==1)
printf("YES %d\n",max);
else
printf("NO\n");
}
return 0;
}