测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题