您的位置:首页 > 其它

Codeforces 2A Winner

2013-08-19 01:24 357 查看
模拟水题

但是英语太烂 没读懂题目,导致wa了好多次啊Orz

#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cassert>
using namespace std;
#define MAX(a,b) a>b?a:b

vector< pair<string,int> > vect;
vector< string > vecn;

int found(string name)
{
for(int i=0;i<vect.size();i++)
{
if(vect[i].first==name) return i;
}
return -1;
}

inline bool cmp( const pair<string,int>& a,const pair<string,int>& b)
{
return a.second>b.second;
}

bool iswinner(string name)
{
for(int i=0;i<vecn.size();i++)
{
if(name==vecn[i]) return true;
}
return false;
}

int main()
{

string name,tn[1100];
int score,tc[1100];
int n;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> tn[i] >> tc[i];
}
for(int i=0;i<n;i++)
{
int j=found(tn[i]);
if( j<0 )
vect.push_back(make_pair(tn[i],tc[i]));
else
vect[j].second+=tc[i];
}
sort(vect.begin(),vect.end(),cmp);
int maxn=vect[0].second;
if(vect.size()==1)
cout << vect[0].first <<endl;
else
{
if(vect[0].second!=vect[1].second)
cout << vect[0].first << endl;
else
{
for(int i=0;i<vect.size();i++)
{
if(vect[i].second!=maxn) break;
vecn.push_back(vect[i].first);
}
vect.clear();
for(int i=0;i<n;i++)
{
int j;
j=found( tn[i] );
if(j<0) vect.push_back(make_pair(tn[i],tc[i]));
else vect[j].second+=tc[i];
j=found( tn[i] );
if( vect[j].second>=maxn&&iswinner(vect[j].first) )
{
cout << vect[j].first << endl;
break;
}
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: