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 }
View Code

相关文章: