变态的模拟啊,刚开始没理解好题意,WA了无数遍,看了讲解才明白的
#include<cstdio>
#include<map>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iostream>
#include<set>
#include<string>
#include<queue>
#define MAX 1005
using namespace std;
map<string ,int>ma,mb;
int n,m,x,i,score[MAX];
char c[MAX][40];
int main(){
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%s %d",c[i],&x);
ma[ c[i] ]+=x;
score[i]=x;
}
m=0;
for(i=0;i<n;i++){
if(ma[ c[i] ]>m) m=ma[ c[i] ];
}
for(i=0;i<n;i++){
mb[c[i]]+=score[i];
if(mb[c[i]]>=m&&ma[c[i]]==m)break;
}
puts(c[i]);
return 0;
}