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;

}

 

你可能感兴趣的:(poj)