lengty @ 2023-11-17 23:08:55
#include<bits/stdc++.h>
using namespace std;
int n;
struct student
{
string name;
int score;
int chinese;
int maths;
int English;
}sst[1005];
bool cmp(student a,student b)
{
return a.score<=b.score;
}
int main()
{
cin>>n;
for (int i = 0; i < n; i++)
{
cin>>sst[i].name>>sst[i].chinese>>sst[i].maths>>sst[i].English;
sst[i].score = sst[i].chinese+sst[i].maths+sst[i].English;
}
sort(sst,sst+n,cmp);
cout<<sst[n-1].name<<" "<<sst[n-1].chinese<<" "<<sst[n-1].maths<<" "<<sst[n-1].English;
system("pause");
return 0;
}
by Terrible @ 2023-11-17 23:15:12
问题出在
bool cmp(student a,student b)
{
return a.score<=b.score;
}
把等于号去掉。
必须满足严格弱序关系。
by Terrible @ 2023-11-17 23:17:02
cmp
应当理解为小于<,不可以写小于等于<=。
如果存在 cmp(a,b)==1
且 cmp(b,a)==1
就会出 RE。
by lengty @ 2023-11-22 15:22:31
@Terrible 谢谢大佬!!!