这道题我开始准备使用map+stable_sort来做,但是无论是map或是unorder_map,都会改变输入的顺序,导致某一组答案错误。
所以我们可以使用map来进行纯模拟的操作。
首先,在输入的同时把最终各个人的分数加起来,然后找到最大值。
其次,再次模拟一遍游戏,当找到第一个达到m且最终的分数也大于等于m的人,输出即可。
12345678910111213141516171819202122232425262728293031323334 |
#define rep(i,a,n) for(int i=a;i<n;++i)#define pb push_back#define close() ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)using namespace std;typedef long long ll;typedef pair<string,int>P;map<string,int>mp,mmp;vector<string>v1;vector<int>v2; int (){ close(); int n,m; string s; cin>>n; rep(i,0,n){ cin>>s>>m; v1.pb(s);v2.pb(m); mp[s]+=m; } m=0; for(auto &x:mp) m=max(m,x.second); rep(i,0,n){ mmp[v1[i]]+=v2[i]; if(mmp[v1[i]]>=m&&mp[v1[i]]>=m){ cout<<v1[i]<<endl; break; } } return 0;} |
原文:大专栏 Codeforces Beta Round 2 A题:Winner
原文地址:https://www.cnblogs.com/chinatrump/p/11423846.html
时间: 2024-10-09 17:53:10