首页 > 代码库 > TOJ-1322 Election
TOJ-1322 Election
Canada has a multi-party system of government. Each candidate is generally associated with a party, and the party whose candidates win the most ridings generally forms the government. Some candidates run as independents, meaning they are not associated with any party. Your job is to count the votes for a particular riding and to determine the party with which the winning candidate is associated.
Input
The first line of input contains a positive integer n satisfying 2 ≤ n ≤ 20, the number of candidates in the riding. n pairs of lines follow: the first line in each pair is the name of the candidate, up to 80 characters; the second line is the name of the party, up to 80 characters, or the word "independent" if the candidate has no party. No candidate name is repeated and no party name is repeated in the input. No lines contain leading or trailing blanks.The next line contains a positive integer m ≤ 10000, and is followed by m lines each indicating the name of a candidate for which a ballot is cast. Any names not in the list of candidates should be ignored.
Output
Output consists of a single line containing one of:- The name of the party with whom the winning candidate is associated, if there is a winning candidate and that candidate is associated with a party.
- The word "independent" if there is a winning candidate and that candidate is not associated with a party.
- The word "tie" if there is no winner; that is, if no candidate receives more votes than every other candidate.
Sample Input
3 Marilyn Manson Rhinoceros Jane Doe Family Coalition John Smith independent 6 John Smith Marilyn Manson Marilyn Manson Jane Doe John Smith Marilyn Manson
Sample Output
Rhinoceros
Source: Waterloo
Local Contest Jun. 19, 1999
题目理解起来毫无难度,但是做的时候发生了很奇怪的事情。开始时,在输入n或m后,gets()前,我用cin.get或getchar吃多余字符,WA。。。
去掉cin.get或getchar(),TLE。。。为此我在网上把别人的代码抄了又抄,只有一个能AC,就是scanf("%d\n",&n)。为什么,我不知道,希望有大牛
能给我解释一下。改来改去我的代码和别人的也长的差不多了,本来我只用了一个map来着,不过两个map确实写起来容易多了。
#include <stdio.h> #include <iostream> #include <map> #include <string.h> #include <memory.h> using namespace std; struct str{ char n[82]; friend bool operator < (str a, str b) { return strcmp(a.n, b.n)<0; } }; int main(){ int i,n,m; str cant,pty; map<str,str> cdt; map<str,int> num; scanf("%d\n",&n); for(i=0;i<n;i++){ gets(cant.n); gets(pty.n); cdt[cant] = pty; num[cant] = 0; } map<str,int>::iterator iter,temp; map<str,str>::iterator temp1; scanf("%d\n",&m); for(i=0;i<m;i++) { gets(cant.n); iter=num.find(cant); iter->second++; } int k = 0; temp=num.begin(); for(iter=num.begin();iter!=num.end();iter++){ if(iter->second == temp->second) k++; else { if(iter->second > temp->second) { temp = iter; k=1; } } } if(k>1) printf("tie\n"); else{ temp1 = cdt.find(temp->first); printf("%s\n",temp1->second.n); } return 0; }
TOJ-1322 Election
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。