lsd2012 @ 2025-01-11 15:03:41
#include<iostream>
#include<algorithm>
using namespace std;
struct people{
int yuwen;
int shuxue;
int english;
int zong;
int y;
}a[1010];
bool cmp(people a,people b){
if(a.zong==b.zong){
if(a.yuwen==b.yuwen){
return a.y>b.y;
}
return a.yuwen>b.yuwen;
}
return a.zong>b.zong;
}
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].yuwen>>a[i].shuxue>>a[i].english;
a[i].zong=a[i].yuwen+a[i].shuxue+a[i].english;
a[i].y=i;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=5;i++){
cout<<a[i].y<<" "<<a[i].zong<<endl;
}
return 0;
}
by ZMY_123 @ 2025-01-11 15:43:17
将14行的a.y>b.y改为a.y<b.y可AC
原因: 在比较函数中,当总分和语文成绩都相同的情况下,学号应该按从小到大的顺序排列。然而,我的代码中错误地将学号大的排在前面。您应该修改比较函数,使得在总分和语文成绩都相同的情况下,学号小的排在前面。
求关