不正经题解
2025-12-20 09:32:38
发布于:上海
34阅读
0回复
0点赞
#include<bits/stdc++.h>;
using namespace std;
struct people{//定义结构体
string name;//名字
int a,b,c;//金牌,银牌,铜牌
int id;//编号
int sum;//总奖牌数
}m[100005];//结构体数组
int cmp(people x,people y){//排序函数cmp
if(x.sum != y.sum){//总牌数是否一样
return x.sum>y.sum;//降序
}
else if(x.a != y.a){//金牌数是否一样
return x.a>y.a;//降序
}
else if(x.b != y.b){//银牌数是否一样
return x.b>y.b;//降序
}
else{//按编号**升序排列**
return x.id<y.id;
}
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){//逐个输入
cin>>m[i].name>>m[i].a>>m[i].b>>m[i].c;
m[i].sum = m[i].a+m[i].b+m[i].c;
m[i].id = i;
}
sort(m,m+n,cmp);//排序
for(int i=0;i<n;i++){//逐个输出
cout<<m[i].name<<" "<<m[i].sum<<endl;
}
return 0;
} //结束
全部评论 1
早作过了
4天前 来自 浙江
0#include <iostream>
#include <algorithm>
using namespace std;
long long n;
struct node
{
string name;
int a,b,c,id;
int sum;
void in()
{
cin>>name>>a>>b>>c;
sum=a+b+c;
}
void out()
{
cout<<name<<" "<<sum<<endl;
}
}arr[1000005];
bool cmp(node a,node b)
{
if(a.sum!=b.sum)return a.sum>b.sum;
if(a.a!=b.a)return a.a>b.a;
if(a.b!=b.b)return a.b>b.b;
return a.id<b.id;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
arr[i].in();
arr[i].id=i+1;
}
sort(arr,arr+n,cmp);
for(int i=0;i<n;i++)
{
arr[i].out();
}return 0;}
4天前 来自 浙江
0












有帮助,赞一个