poj 2643 election

题目链接:http://poj.org/problem?id=2643

 

在考stl的map...

我是定义了一个string 指向string的,表示参选人和党派的关系,和一个string 指向int的,表示某个党派被投票的次数。

需要注意的是!!!

需要注意的是!!!

需要注意的是!!!

 

字符串读入部分...

在输入n和m之后,会有一个回车符没读进去...(大概是这样?)

如果不处理一下的话,后面的字符串就会少读入一个...(sad)

解决的办法是在读完n和m之后写一个getchar(); 把回车符读掉。

 

#include <algorithm>
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <map>
#include <stack>
#include <queue>

using namespace std;
typedef long long LL;
const int inf = 8E8;
int n,m;
string ans;
map<string,string>m1;
map<string,int>m2;
string c_name,p_name;
char ch;
int main()
{
    cin>>n;
    getchar();
    for ( int i = 1 ; i <= n ; ++i )
    {
        getline(cin,c_name);

        getline(cin,p_name);
        m1[c_name]=p_name;
    }
    cin>>m;
    getchar();
    for ( int i = 1 ; i <= m ; i++ )
    {
        getline(cin,c_name);
        m2[c_name]++;
    }
    map<string,int>::iterator it;
    int mmax=-1;
    for (it=m2.begin();it!=m2.end();it++)
    {
        if (it->second>mmax)
        {
           mmax=it->second;
           ans = m1[it->first];
        }
    }
    int p = 0;
    for ( it = m2.begin();it!=m2.end();it++)
    {
        if (it->second==mmax)
        {
            p++;
        }
    }
    if (p!=1)
    {
        ans="tie";
    }

    cout<<ans<<endl;
    return 0;
}

 

posted @ 2015-07-08 09:27  111qqz  阅读(283)  评论(0编辑  收藏  举报