tai棒了
2025-02-23 16:10:23
发布于:江苏
第一种解法
#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;
for(int i=0;i<n;i++){
cin>>l[i].name>>l[i].a>>l[i].b>>l[i].c;
l[i].z = l[i].a + l[i].b + l[i].c;
}
for(int i=0;i<n-1;i++){
for(int i=0;i<n;i++){
if(l[i].z<l[i+1].z){
swap(l[i],l[i+1]);
}else if(l[i].a<l[i+1].a && l[i].z==l[i+1].z){
swap(l[i],l[i+1]);
}else if(l[i].a==l[i+1].a){
if(l[i].b<l[i+1].b && l[i].a==l[i+1].a){
swap(l[i],l[i+1]);
}else if(l[i].b==l[i+1].b){
if(l[i].c<l[i+1].c && l[i].b == l[i].b){
swap(l[i],l[i+1]);
}
}
}
}
}
for(int i=0;i<n;i++){
cout<<l[i].name<<" "<<l[i].z<<endl;
}
return 0;
}*/
这里空空如也
有帮助,赞一个