A294.坏了的排行榜1.0那儿错了
2026-06-21 12:35:29
发布于:广东
#include<bits/stdc++.h>
using namespace std;
struct id{
string s;
int a,b,c;
int sum;
}m[100001];
bool cmp(id x,id 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.c>y.c;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>m[i].s>>m[i].a>>m[i].b>>m[i].c;
m[i].sum=m[i].a+m[i].b+m[i].c;
}
sort(m,m+n,cmp);
for(int i=0;i<n;i++){
cout<<m[i].s<<" "<<m[i].sum<<endl;
}
return 0;
}
全部评论 1
AC code:
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+5; int n; struct people { string name; int id,a,b,c; int sum; }p[maxn]; bool cmp(people x,people y) { if(x.sum==y.sum) { if(x.a==y.a) { if(x.b==y.b) { return x.id<y.id; } return x.b>y.b; } return x.a>y.a; } return x.sum>y.sum; } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>p[i].name;p[i].id=i; cin>>p[i].a>>p[i].b>>p[i].c; p[i].sum=p[i].a+p[i].b+p[i].c; } sort(p+1,p+n+1,cmp); for(int i=1;i<=n;i++) { cout<<p[i].name<<" "; cout<<p[i].sum<<endl; } return 0; }昨天 来自 广东
0cmp 函数里多比较了铜牌 c:
题目要求是:总数相同 → 金牌相同 → 银牌相同 → 按输入顺序输出,而不是按铜牌排序。
你的代码最后 return x.c > y.c; 会导致按铜牌降序排,不符合题意。昨天 来自 广东
0



















有帮助,赞一个