传送门:http://codeforces.com/problemset/problem/2/A
题意:给你一个数N,代表N轮游戏,接下来N行给出没轮某人的得分,求N轮后最高得分者是谁,若有多人,则输出最先到达(或大于)这分数的人。
一道很水的模拟题,不过有两个坑点,1.最先到达最后的最高分的人不一定是结果,他可能后来会扣分;2.最先到达最后的最高分的人不一定是结果,某人可能分数先大于这个最后的最高分。
#include<stdio.h>
#include<string.h>
#include<string>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
map<string,int> a,b;
string name[1005];
int score[1005];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
cin>>name[i]>>score[i];
a[name[i]]+=score[i];
}
int Max=-1;
for(int i=0;i<n;i++)
{
if(a[name[i]]>Max)
Max=a[name[i]];
}
for(int i=0;i<n;i++)
{
b[name[i]]+=score[i];
if(b[name[i]]>=Max&&a[name[i]]==Max)
{
cout<<name[i]<<endl;
break;
}
}
}
return 0;
}
题意:给你一个数N,代表N轮游戏,接下来N行给出没轮某人的得分,求N轮后最高得分者是谁,若有多人,则输出最先到达(或大于)这分数的人。
一道很水的模拟题,不过有两个坑点,1.最先到达最后的最高分的人不一定是结果,他可能后来会扣分;2.最先到达最后的最高分的人不一定是结果,某人可能分数先大于这个最后的最高分。
#include<stdio.h>
#include<string.h>
#include<string>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
map<string,int> a,b;
string name[1005];
int score[1005];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
cin>>name[i]>>score[i];
a[name[i]]+=score[i];
}
int Max=-1;
for(int i=0;i<n;i++)
{
if(a[name[i]]>Max)
Max=a[name[i]];
}
for(int i=0;i<n;i++)
{
b[name[i]]+=score[i];
if(b[name[i]]>=Max&&a[name[i]]==Max)
{
cout<<name[i]<<endl;
break;
}
}
}
return 0;
}