90分求助!!!

P5740 【深基7.例9】最厉害的学生

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。


|