我的题解虽没有那么简洁,但是看得懂
2025-02-11 15:58:10
发布于:上海
6阅读
0回复
0点赞
#include<iostream>
#include<algorithm>
using namespace std;
struct phb{
    string name;
    int gold,silver,copper,id,sum;//金牌,银牌,铜牌,初始下标,每个人的奖牌总数
};
bool cmp(phb x,phb y){
    if(x.sum==y.sum){
        if(x.gold==y.gold){
            if(x.silver==y.silver){
                return x.id<y.id;
            }
            else{
                return x.silver>y.silver;
            }
        }
        else{
            return x.gold>y.gold;
        }
    }
    else{
        return x.sum>y.sum;
    }
}
int main(){
    phb n[100005];
    int m;
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>n[i].name>>n[i].gold>>n[i].silver>>n[i].copper;
        n[i].id=i;
        n[i].sum=n[i].gold+n[i].silver+n[i].copper;
    }
    sort(n+1,n+m+1,cmp);
    for(int i=1;i<=m;i++){
        cout<<n[i].name<<" "<<n[i].sum<<endl;
    }
    return 0;
}
这里空空如也





有帮助,赞一个