A27692. 纸牌游戏(game.cpp)
填空题
中等
知识点
题目描述
纸牌游戏(game.cpp)
题目描述
有一种纸牌游戏,游戏的规则如下: 初始时玩家分数都是0 ,游戏一共进行 n 个回合,每个回合中玩家要么得分要么扣分。游戏结束时如果只有一名得分最高的玩家,那么他就是获胜者:如果有两名或两名以上的玩家最高分数相同,则其中先获得最高分的玩家为游戏的获胜者。数据保证在比赛结束时至少有一个玩家的分数为正
输入格式
第一行仅有一个整数 n,表示游戏进行的回合数,接下来的 n 行,按照游戏的先后顺序给出每一回合玩家的用户名和得失分数的信息 (负数表示扣分),玩家的用户名均为长度不超过 32 的小写字母组成的字符串,分数的绝对值不大于 1000。
输出格式
仅有一行,包含一个字符串,表示获胜者的名称.

参考答案
#include<bits/stdc++.h>
using namespace std;
int n, maxn, p;
struct node
{
string name;
int score;
}q[100005];
map <string, int> m, t;
int main()
{
cin >> n;
for(int i = 1;i <= n;i++)
{
cin >> q[i].name;
cin >> q[i].score;
m[q[i].name] += q[i].score;
}
for(int i = 1;i <= n;i++)
{
if(m[q[i].name] > maxn)
maxn = m[q[i].name];
}
for(int i = 1;i <= n && !p;i++)
{
t[q[i].name] += q[i].score;
if(m[q[i].name] == maxn && t[q[i].name] >= maxn)
p = i;
}
cout << q[p].name;
return 0;
}
上一题
下一题