Somakura @ 2024-12-02 10:49:07
#include <bits/stdc++.h>
using namespace std;
struct Stu{
string name;
int CN;
int Ma;
int En;
int sum;
};
bool cmp(Stu a,Stu b){
if (a.sum != b.sum) {
return a.sum > b.sum;
}
}
int main(){
int n; cin >> n;
Stu stu[n+10];
for(int i=1;i<=n;i++){
cin >> stu[i].name >> stu[i].CN >> stu[i].Ma >> stu[i].En;
stu[i].sum = stu[i].CN + stu[i].Ma + stu[i].En;
}
sort(stu+1,stu+n+1,cmp);
cout << stu[1].name <<" " <<stu[1].CN << " " << stu[1].Ma << " " << stu[1].En;
return 0;
}
by Arefa @ 2024-12-02 11:39:07
当最高分相等时,应输出靠前的人。
因此,可以在 struct Stu 中加入成员变量 id,用来记录输入的顺序。
并在 cmp 函数中,当 a.sum == b.sum 返回 a.id < b.id
修改后代码:
#include <bits/stdc++.h>
using namespace std;
struct Stu{
string name;
int CN;
int Ma;
int En;
int sum;
int id;
};
bool cmp(Stu a,Stu b){
if (a.sum != b.sum) {
return a.sum > b.sum;
}
else return a.id < b.id;
}
int main(){
int n; cin >> n;
Stu stu[n+10];
for(int i=1;i<=n;i++){
cin >> stu[i].name >> stu[i].CN >> stu[i].Ma >> stu[i].En;
stu[i].sum = stu[i].CN + stu[i].Ma + stu[i].En;
stu[i].id = i;
}
sort(stu+1,stu+n+1,cmp);
cout << stu[1].name <<" " <<stu[1].CN << " " << stu[1].Ma << " " << stu[1].En;
return 0;
}