私は単純なカウントソートを行っています。私は多くのテストケースでテストしました。私のコンピューターでは正常に動作しますが、コードを送信した後、シェフはランタイム エラーを返します: セグメンテーション エラー。誰か助けてください。ここにコードを貼り付けます
#include <stdio.h>
#include <stdlib.h>
#define i64 long long
int main(){
int n,i,t;
i64 *max=(i64 *)malloc(sizeof(i64)),*diff=(i64 *)malloc(sizeof(i64));
scanf("%d",&t);
while(t--){
*max=-9999999999;
*diff=9999999999;
scanf("%d",&n);
i64 A[n],B[n];
for(i=0;i<n;i++){
scanf("%llu",&A[i]);
if(*max<A[i])
*max=A[i];
B[i]=0;
}
i64 k=*max;
i64 C[k+1];
int i,j;
for(i=0;i<=k;i++) {
C[i]=0;
}
for(j=0;j<n;j++){
C[A[j]]=C[A[j]]+1;
B[j]=0;
}
for(i=1;i<=k;i++) {
C[i]=C[i]+C[i-1];
}
for(j=n-1;j>=0;j--){
B[C[A[j]]-1]=A[j];
C[A[j]]=C[A[j]]-1;
}
for(i=1;i<n;i++){
if(*diff>B[i]-B[i-1])
*diff=B[i]-B[i-1];
}
printf("%llu\n",*diff);
}
return 0;
}