题解:P15929 [TOPC 2021] Olympic Ranking
Dr_KC_Haus · · 题解
很简单吧。
用个结构体,排序比较的时候看金牌数量,如果不同就比较金牌数量,如果相同再看银牌数量,如果银牌数量不同,就比较银牌数量,反之就比较铜牌数量。
:::warning[注意]{open}
此题的字符串输入需用 getline。但这样输入会导致字符串前多一个空格,所以输入完后再把字符串前面的空格删掉。
可以用 substr 从下标
排序为降序排序。 :::
:::success[AC Code]
#include<bits/stdc++.h>
#define int long long
#define rest(i,n,m) for(int i=n;i<=m;i++)
using namespace std;
const int N=307;
int n;
struct node{
int g,s,b;
string noc;
}a[N];
bool cmp(node a,node b){
if(a.g!=b.g) return a.g>b.g;
if(a.s!=b.s) return a.s>b.s;
return a.b>b.b;
}
signed main(void){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
rest(i,1,n){
cin>>a[i].g>>a[i].s>>a[i].b;
getline(cin,a[i].noc);
a[i].noc=a[i].noc.substr(1);
}
sort(a+1,a+1+n,cmp);
cout<<a[1].noc<<endl;
exit(0);
}
:::