第一种解法
#include <bits/stdc++.h>
using namespace std;
struct student{
char s[25];
int a, b, c, sum = 0, id;
};
bool compareStudent(student x, student y)
{
if(x.sum != y.sum) return x.sum > y.sum;
if(x.a != y.a) return x.a > y.a;
if(x.b != y.b) return x.b > y.b;
return x.id < y. id;
}
int main()
{
student stu[100010];
int n;
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> stu[i].s >> stu[i].a >> stu[i].b >> stu[i].c;
stu[i].sum = stu[i].a + stu[i].b + stu[i].c;
stu[i].id = i;
}
sort(stu, stu + n, compareStudent);
for(int i = 0; i < n; i++)
{
printf("%s %d\n",stu[i].s, stu[i].sum);
}
return 0;
}
第二种解法
/*#include <bits/stdc++.h>
using namespace std;
struct stu{
string name;
long long a,b,c;
long long z;
}l[100010];
int main(){
int n;cin>>n;
}*/