pachong_xyc @ 2024-01-01 20:55:00
#include<bits/stdc++.h>
#define ll long long
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.ti
using namespace std;
int n;
struct node{
string name;
int chinese,maths,english,sum;
}a[10001];
bool cmp(node q,node h){
if(q.sum<=h.sum) return 1;
return 0;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].chinese>>a[i].maths>>a[i].english;
a[i].sum=a[i].chinese+a[i].maths+a[i].english;
}
sort(a+1,a+1+n,cmp);
cout<<a[n].name<<" "<<a[n].chinese<<" "<<a[n].maths<<" "<<a[n].english;
return 0;
}
by pachong_xyc @ 2024-01-01 20:55:29
第一个测试点RE了,为什么?
by CGk_by_SA @ 2024-01-01 22:08:51
如果有多个总分相同的学生,输出靠前的那位
。RE处:
bool cmp(node q,node h){
if(q.sum<=h.sum) return 1;
return 0;
}
改
return q.sum<h.sum||q.sum==h.sum&&q.id>h.id;
`(id是编号)总之,删了=
。
by CGk_by_SA @ 2024-01-04 21:43:27
补一下,sort
定义的cmp
必须能严格区分两个元素的大小或相等关系,如果出环,将可能会RE。