南邮 OJ 1432 队长

队长

时间限制(普通/Java) :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 187            测试通过 : 44 

比赛描述

南邮ACM 2010-2011年度校级代表队需要选一个队长。代表队一共有n个人,分别用1n编号,其中m个人参与了投票。得票数过半(票数大于m div 2)的人将被选为队长。

输入数据将告知这m个人分别将票投给了谁,请统计出谁将担任南邮ACM 2010-2011年度校级代表队队长。




输入

第一行两个数nm

    第二行有m个数,这些数都是不超过n的正整数,表明这m个人的选择。1<=n<=maxlongint1<=m<=10000


输出

输出将被选为队长的人。如果没有人的票数过半,请输出-1


样例输入

7 4
7 7 2 7

样例输出

7

题目来源

NUPT ACM 2010 Personal Ranking Contest




#include<iostream>
#include<map>
using namespace std;

int main(){
	long long n;
	int m,i;
	map<long long,int> iiMap;
	map<long long, int>::iterator it;
	scanf("%I64d%d",&n,&m);
	for(i=0; i<m; i++){
		scanf("%I64d",&n);
		iiMap[n]++;
	}
	for(it=iiMap.begin(); it!=iiMap.end(); ++it){
		if(2*it->second > m){
			break;
		}
	}
	if(it!=iiMap.end()){
		printf("%I64d\n",it->first);
	}else{
		printf("-1\n");
	}
}



/*Wrong Answer at Test 8
#include<stdio.h>
long long a[10000];
int main(){
	long long n,r;
	int m,i,count=0;
	scanf("%I64d%d",&n,&m);
	for(i=0;i<m;i++){
		scanf("%I64d",a+i);
		if(0==count){
			r = a[i];
		}else{
			if(a[i] == r){
				count++;
			}else{
				count--;
			}
		}
	}
	count = 0;
	for(i=0; i<m; i++){
		if(a[i]==r){
			count++;
		}
	}
	if(count*2 > m){
		printf("%I64d\n",r);
	}else{
		printf("-1");
	}
}
*/




你可能感兴趣的:(ACM,南邮OJ,队长)