1. 程式人生 > >zcmu1773: Mode【簡單】

zcmu1773: Mode【簡單】

1773: Mode

Description

give you a number of n series, in which a number of more than n / 2 times , you should find out that the number (n<=500000,x<=10^19)

Input

The first line is a positive integer n. The second line of n positive integers separated by spaces.

Output

A Positive integer on a line indicates that number 

Sample Input

5 3 2 3 1 3

Sample Output

3

解題思路:這題第一想到就是用map做,但是資料用點大,我就用string來輸入資料,但是自己在這裡犯了個錯誤,就是map沒有clear(),導致答案錯誤,這不應該。

#include<bits/stdc++.h>
using namespace std;
map<string,int>mp;

int main(void)
{
	int n;
	while(~scanf("%d",&n))
	{
		getchar();
		mp.clear();
		int t=n/2;
		string s,ans="-1";
		for(int i=0;i<n;i++)
		{
			cin>>s;
			mp[s]++;
			if(mp[s]>t) 
			ans=s;	
		}
		if(ans!="-1")
		cout<<ans<<endl;
	}
	return 0;
}