Winner
题目链接:
http://codeforces.com/problemset/problem/2/A
题目大意:
给出各轮选手得分,最后输出分最高的那个人,如果有多人分数一样高,那就输出最早出现大于等于这个分数的人.
解题思路:
1.统计每人的总得分。
2.找出做高分。
3.重新统计每人的分数,最先达到这个分数的为赢家。
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
struct game{
string name;
int score;
}pe[1010],tmp[1010],tail[1010];
int main(){
int i,j,k,n,cnt=0;
string maxs;
scanf("%d",&n);
for(i = 0,k = 0; i < n; i++,k++){
pe[k].score = 0;
cin>>tmp[i].name>>tmp[i].score;
for(j = 0; j < k; j++)
if(tmp[i].name == pe[j].name){
k--;
break;
}
pe[j].name = tmp[i].name;
pe[j].score += tmp[i].score;
}
for(i = 0; i < k; i++)
if(cnt < pe[i].score)
cnt = pe[i].score;
for(i = 0,k = 0; i < n; i++,k++){
tail[i].score = 0;
for(j = 0; j < k; j++)
if(tmp[i].name == tail[j].name){
k--;
break;
}
tail[j].name = tmp[i].name;
tail[j].score += tmp[i].score;
if(tail[j].score >= cnt && pe[j].score == cnt){
cout<<tail[j].name<<endl;
break;
}
}
return 0;
}