2A - Winner

原题链接

这题我写的时候又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;
}
posted @ 2021-04-02 13:44  beatlesss  阅读(38)  评论(0编辑  收藏  举报