Cod sursa(job #674343)

Utilizator an_drey_curentandreycurent an_drey_curent Data 6 februarie 2012 00:45:17
Problema Elementul majoritar Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>
#include<vector>
#define prim 123457
using namespace std;
vector<pair<unsigned,unsigned> >hhash[123460];
unsigned N,numar,aux,aux2;
unsigned operare(unsigned x)
{
	unsigned cheie=x%prim,i;
	for(i=0;i<hhash[cheie].size();i++)
		if(hhash[cheie][i].first==x)
		{
			hhash[cheie][i].second++;
			if(hhash[cheie][i].second>=(aux/2+1))
				return hhash[cheie][i].second;
			else
				return 1;
		}
		hhash[cheie].push_back(make_pair(x,1));
		return 0;
}
int main()
{
	freopen("elmaj.in","r",stdin);
	freopen("elmaj.out","w",stdout);
	scanf("%u",&N);aux=N;
	while(N--)
	{
		scanf("%u",&numar);
		aux2=operare(numar);
		if(aux2>=(aux/2+1))
		{
			printf("%u %u\n",numar,aux2);
			return 0;
		}
	}
	printf("-1\n");
	return 0;
}