标签:
题意:
N个回合。
每个回合:name score【名为name的这个人得了score分(可负可正)】。
问最后谁的累积分数是最高的。设为M。如果有好几个都得了M,找出这几个人中哪个最早回合累积分数超过【大于等于】M。
最早回合累积分:每一个回合结束后每个人都有一个当前的累积分数。
思路:
这题竟被困了挺久,,,,,,,,,,
*回头进standing看看别人写的简短代码
代码:
stru n1{ string name; int p; } vs[1005]; int n; map<string,int> mp, mp2; string NAME[1005]; int A[1005], B[1005]; int main(){ cin>>n; int cn=0; int ans=0; int T=0; int id=-1; mp.clear(); mp2.clear(); mem(A,0); mem(B,0); rep(i,1,n){ string name,p; cin>>vs[i].name>>vs[i].p; if(mp[vs[i].name]==0){ mp[vs[i].name]=++cn; NAME[cn]=vs[i].name; } A[mp[vs[i].name]]+=vs[i].p; } rep(i,1,cn){ ans=max(ans,A[i]); } rep(i,1,cn){ if(A[i]==ans){ ++T; id=i; mp2[NAME[i]]=1; } } if(T==1){ cout<<NAME[id]<<endl; } else{ rep(i,1,n){ if(mp2[vs[i].name]==1){ B[mp[vs[i].name]]+=vs[i].p; if(B[mp[vs[i].name]]>=ans){ cout<<vs[i].name<<endl; ret 0; } } } } return 0; }
标签:
原文地址:http://www.cnblogs.com/fish7/p/4330886.html