引用 4 楼 zhangxiangDavaid 的回复:
偷个懒,试下快速排序:
int T, N, K, A, B;
int i, j;
int straw[1000000];
int cmp(int *a, int *b)
{
return *a
}
int main()
{
scanf("%d", &T);
while (T--)
{
scanf("%d%d", &N, &K);
memset(straw, 0, sizeof(int) * 1000000);
while (K--)
{
scanf("%d%d", &A, &B);
for (i = A; i <= B; i++) straw[i]++;
}
qsort(straw, N, sizeof(int), cmp);
printf("%d\n", straw[N / 2]);
}
return 0;
}
用了快排结果还是超时,还有改进的方法吗?
#include
#include
int a[1000000];
int cmp(const void*a,const void*b)
{
return *(int*)a-*(int*)b;
}
int main()
{
int T,n,k,i,t,x,y,temp;
scanf(“%d”,&T);
while(T–)
{
scanf(“%d%d”,&n,&k);
for(i=0; i
a[i]=0;
for(i=1; i<=k; i++)
{
scanf(“%d%d”,&x,&y);
for(t=x-1; t<=y-1; t++)
a[t]++;
}
qsort(a,n,sizeof(int),cmp);
printf(“%d\n”,a[n/2]);
}
return 0;
}