求助,测试点8挂了

P1093 [NOIP2007 普及组] 奖学金

Marc206721 @ 2024-12-09 08:45:21

明明是按照题目要求先按照总得分再按照语文分数再按照学号,为什么还会#8WA

#include<stdio.h>
struct inf {
int sc[3];
int sum;
int r;
}stu[301];
int main(){
    int num;
    scanf("%d",&num);
    //input
    for(int i=0;i<num;i++){
        scanf("%d %d %d",&stu[i].sc[0],&stu[i].sc[1],&stu[i].sc[2]);
        stu[i].sum=(stu[i].sc[0]+stu[i].sc[1]+stu[i].sc[2]);
        stu[i].r=i+1;
    }
    //sort
    for(int i=0;i<num-1;i++){
        for(int j=0;j<num-1-i;j++){
            if(stu[j].sum>stu[j+1].sum||(stu[j].sum==stu[j+1].sum&&stu[j].sc[0]>stu[j+1].sc[0])||(stu[j].sum==stu[j+1].sum&&stu[j].sc[0]==stu[j+1].sc[0]&&stu[j].r>stu[j+1].r)){
                struct inf tmp=stu[j];
                stu[j]=stu[j+1];
                stu[j+1]=tmp;

            }
        }
    }
    //output
    for(int i=num-1;i>=num-5;i--){
        printf("%d %d\n",stu[i].r,stu[i].sum);

    }
    return 0;

}

by markeoeitwupp @ 2024-12-09 11:55:21

我看的你这个样例2就不对啊

你把特别长的if的

stu[j].r>stu[j+1].r

改成

stu[j].r<stu[j+1].r

先输出学号小的


by Marc206721 @ 2024-12-09 18:37:30

@markeoeitwuppokok,谢谢


|