原题链接https://codeforces.com/problemset/problem/2/A
这题我写的时候又wa了, 原因是我只维护了过程中的最大值,没有注意要先按照总成绩来看。
题意:按顺序给你一些人和它的得分,统计出每个选手的总成绩,然后找到得分最多的选手,考虑到可能存在多个选手得到最高分,那么就以最先得到最高分的选手为获胜者。
思路:就是先搞出总成绩,然后搞过程成绩,按顺序看,第一个满足总成绩和中间成绩都 >= 最大总成绩的就是答案
代码如下
map<string,int> f, g;
string s[N];
int c[N];
int main()
{
int n;
cin >> n;
for(int i = 0 ; i < n ; ++ i)
{
cin >> s[i] >> c[i];
f[s[i]] += c[i];
}
int maxd = 0;
for(int i = 0 ; i < n ; i ++)
maxd = maxd < f[s[i]] ? f[s[i]] : maxd;
int i;
for(i = 0 ; f[s[i]] < maxd || (g[s[i]] += c[i]) < maxd ; ++ i);
cout << s[i] << endl;
return 0;
}