很简单吧。
用个结构体,排序比较的时候看金牌数量,如果不同就比较金牌数量,如果相同再看银牌数量,如果银牌数量不同,就比较银牌数量,反之就比较铜牌数量。
注意:
-
此题的字符串输入需用
getline。但这样输入会导致字符串前多一个空格,所以输入完后再把字符串前面的空格删掉。 -
可以用
substr从下标 返回字符串,这样就得到了一个前面没有空格的字符串。 -
排序为降序排序。
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);
}
暂无评论