最后的赢家

题目描述
ACM是一条很艰难的路,走到最后你的同伴会越来越少,因为很多人惧怕困难,不愿意去挑战难题,想要成为最后的赢家,务必静下心认真看书做题、温故知新。

现在有一个游戏的最后的赢家是根据以下规则确定的。如果在游戏结束时只有一个玩家拥有最大点数,那么他就是赢家。如果这类玩家的数量超过一个,情况就会变得更加困难。在每一轮比赛中,玩家获得或失去一定数量的积分。在游戏过程中,点数记录在“name score”行中,其中name是玩家的名字,score是本轮获得的点数,它是一个整数。如果比分为负,这意味着这名球员在这轮比赛中输了。所以,如果两个或两个以上的玩家在游戏结束时拥有最多的点数(例如,它等于m),那么赢得其中一个至少先得m分的玩家。最初每个玩家都有0分。保证在比赛结束时,至少有一名选手得分为正数。

输入
第一行包含一个整数n(1≤1000)。然后接下来n行,包含按时间顺序排列的“name score”格式的轮数信息,其中name是一个长度从1到32的小写拉丁字母字符串,score是一个介于-1000和1000之间的整数,包括-1000和1000。

输出
打印出最后赢家的姓名。

样例输入
3
mike 3
andrew 5
mike 2

样例输出
andrew

代码(c++版)

#include<bits/stdc++.h>
using namespace std;
int main() {
	int n,temp,Max=0;
	cin>>n;
	map<string,int> mp;
	string str,ans;
	for(int i=0; i<n; i++) {
		cin>>str>>temp;
		mp[str]+=temp;
		if(mp[str]>Max) {
			Max=mp[str];
			ans=str;
		}
	}
	cout<<ans<<endl;
	return 0;
}

(Java版)

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int cnt=cin.nextInt();
        int Max=0;
        String str,ans=null;
        Integer temp;
        Map<String,Integer> mp=new HashMap<String, Integer>();
        for(int i=0;i<cnt;i++){
            str=cin.next();
            temp=cin.nextInt();
            if(mp.containsKey(str)){
                mp.put(str,temp+mp.get(str));
            }else {
                mp.put(str, temp);
            }
            if(mp.get(str)>Max){
                ans=new String(str);
                Max=mp.get(str);
            }
        }
        System.out.println(ans);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值