http://codeforces.com/contest/2
A
模拟题
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 map<string,ll>mp; 6 struct sair{ 7 string str; 8 int id; 9 ll num; 10 }a[1005]; 11 12 bool cmp(sair a,sair b){ 13 if(a.num==b.num) return a.id<b.id; 14 return a.num>b.num; 15 } 16 17 int main(){ 18 19 int n; 20 cin>>n; 21 string ans; 22 ll Max=-0x3f3f3f3f; 23 for(int i=1;i<=n;i++){ 24 cin>>a[i].str>>a[i].num; 25 a[i].id=i; 26 } 27 for(int i=1;i<=n;i++){ 28 mp[a[i].str]+=a[i].num; 29 a[i].num=mp[a[i].str]; 30 } 31 for(int i=1;i<=n;i++){ 32 if(mp[a[i].str]>Max){ 33 Max=mp[a[i].str]; 34 } 35 } 36 sort(a+1,a+n+1,cmp); 37 map<string,ll>tmp; 38 for(int i=1;i<=n;i++){ 39 if(mp[a[i].str]==Max){ 40 tmp[a[i].str]=1; 41 } 42 } 43 int idmin=0x3f3f3f3f; 44 for(int i=1;i<=n;i++){ 45 if(tmp[a[i].str]==1){ 46 if(idmin>a[i].id&&a[i].num>=Max){ 47 idmin=a[i].id; 48 ans=a[i].str; 49 } 50 } 51 } 52 cout<<ans<<endl; 53 //system("pause"); 54 55 }