我遇到了一個問題。題目鏈接: https://www.acgo.cn/problemset/5/info
源碼:
#include
#include
struct People{
int ownID;//報名號
int score;//分數
};
int compare(const void*a,const void *b){
if((*((People*)a)).score==(*((People*)b)).score)return (*((People*)a)).ownID-(*((People*)b)).ownID;
return (*((People*)b)).score-(*((People*)a)).score;
}
int main(){
int m,n,i1,i2;
People *l;
scanf("%d%d",&n,&m);
m*=1.5;
l=(People*)malloc(n*sizeof(l[0]));
for(i1=0;i1scanf("%d%d",&(l[i1].ownID),&(l[i1].score));
qsort(l,n,sizeof(l[0]),compare);//排序
for(i2=m-1;l[i2].score==l[m-1].score;i2++){}//計算最後一名的排名
printf("%d %d\n",l[m].score,i2);
for(i1=0;i1printf("%d %d\n",l[i1].ownID,l[i1].score);
}
return 0;
}
此代碼提交後不通過。請問問題何在?
第16行:l = (People*)malloc(n * sizeof(struct People)); //(n * sizeof(l[0]))
其他没发现问题。