В соответствии с проблемой мы должны определить, существует ли элемент более n/2 раза или нет, а затем напечатать Yes или No соответственно. Числа могут варьироваться от 10^-3 до 10^3.SPOJ MAJOR (получение ошибки Runtime)
Я взял подсчет массива [2005], а затем добавил 1000 к каждому входу, чтобы сделать 10^-3 равным 0, т. Е. -1000 + 1000 = 0, а затем сохранить количество входящих в счетчик -1000 [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;
}