题意:给你候选人以及候选人党派, 再给你每个人的选票, 统计出谁当选了;如果没有最优解, 输出”tie“否则输出当选人的党派;
题解:还是两个map 一个映射候选人的党派, 还有一个映射候选人选票;
//code
#include<iostream>
#include<map>
#include<cstdio>
#include<cstring>
#include<string>
#include<cctype>
#include<algorithm>
using namespace std;
struct String{
char name[88];
friend bool operator < (String a, String b)
{
return strcmp(a.name, b.name)<0;
}
};
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
map<String, String>_m_party;
map<String, String>::iterator party_it;
map<String, int>_m;
map<String, int>::iterator iter, ans;
int n, m;
String tmp1, tmp2;
scanf("%d\n", &n);
for(int i=0; i<n; i++)
{
gets(tmp1.name);
gets(tmp2.name);
_m_party.insert(map<String, String>::value_type(tmp1, tmp2));
_m.insert(map<String, int>::value_type(tmp1, 0));
}
scanf("%d\n", &m);
for(int i=0; i<m; i++)
{
gets(tmp1.name);
iter = _m.find(tmp1);
iter->second++;
}
int num=0;
ans = _m.begin();
for(iter=_m.begin(); iter!=_m.end(); ++iter)
{
if(iter->second == ans->second) num++;
else
{
if(iter->second > ans->second)
{
ans = iter;
num=1;
}
}
}
if(num > 1) printf("tie\n");
else{
party_it = _m_party.find(ans->first);
printf("%s\n", party_it->second.name);
}
return 0;
}