首页 > Windows开发 > 详细

Codeforces 2A. Winner

时间:2015-11-11 20:37:27      阅读:336      评论:0      收藏:0      [点我收藏+]

题意:找出胜利者,即总得分最高的。当有不止一个最高分的人比较坑,输出最高分中的人,条件是,这个人在过程中是第一个获得大于等于最高分的人。(有点绕,仔细理解)

题目链接:http://codeforces.com/problemset/problem/2/A

#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
#include <set>

using namespace std;

string name[1005];
string st;
int a[1005];

map<string,int>s;

int main()
{
    int n,x;
    string allname[1005];
    cin>>n;

    string STR;
    int k=1;
    for(int i=1; i<=n; i++)
    {
        cin>>st>>x;
        a[i]=x;
        allname[i]=st;
        if(s.find(st)==s.end())
        {
            s[st]=0;
            name[k++]=st;
        }
        s[st]+=x;
    }
    int Max=-1e9;
    for(int i=1; i<k; i++)
    {
        if(s[name[i]]>Max)
        {
            Max=s[name[i]];
        }
    }
    int kk=1;
    string maxname[1005];
    map<string,int>ans;
    for(int i=1; i<k; i++)
    {
        if(s[name[i]]==Max)
        {
            maxname[kk++]=name[i];
            ans[name[i]]=0;
        }
    }
    int num=kk-1;
    int t=0;
    map<string,int>fuck;
    for(int i=1; i<=n; i++)
    {
        if(ans.find(allname[i])!=ans.end())
        {
            if(fuck.find(allname[i])==fuck.end())
            {
                fuck[allname[i]]=0;
            }
            fuck[allname[i]]+=a[i];
            if(fuck[allname[i]]>=Max)
            {
                STR=allname[i];
                break;
            }
        }
    }

    cout<<STR<<endl;

    return 0;
}

 

Codeforces 2A. Winner

原文:http://www.cnblogs.com/mengzhong/p/4957195.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!