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
@奔波儿灞 谢谢!!