對排序算法的疑問,感謝回答

我遇到了一個問題。題目鏈接: 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]))
其他没发现问题。