90分求助!!

P1093 [NOIP2007 普及组] 奖学金

xq_z @ 2022-05-16 20:37:58

测试点8错了

#include<bits/stdc++.h>
using namespace std;
int n;
struct student{
    int yy,sx,yw,sum,l;
}a[305];
bool cmp(student a,student b){
    if(a.sum!=b.sum) return a.sum>b.sum;
    else if(a.yw!=b.yw) return a.yw>b.yw;
    else if(a.sx!=b.sx) return a.sx>b.sx;
    else if(a.yy!=b.yy) return a.yy>b.yy;
    else return a.l>b.l;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        a[i].l=i;
        cin>>a[i].yw>>a[i].sx>>a[i].yy;
        a[i].sum=a[i].yw+a[i].sx+a[i].yy;
    }
    sort(a+1,a+1+n,cmp);
    for(int i=1;i<=5;i++){
        cout<<a[i].l<<" "<<a[i].sum<<endl;
    }
    return 0;
}

by 奔波儿灞 @ 2022-05-16 20:41:52

“先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学 排在前面,这样,每个学生的排序是唯一确定的。” 认真读题,总分和语文都相同比学号而不是数学


by _Remake_ @ 2022-05-16 20:42:34

else return a.l>b.l;

试试把大于号改成小于号


by 奔波儿灞 @ 2022-05-16 20:43:29

对,还有楼上说的学号大小比错了


by xq_z @ 2022-05-17 13:03:01

@奔波儿灞 谢谢!!


|