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; }