Cod sursa(job #715944)

Utilizator ionut_ungureanuUngureanu Vladut Ionut ionut_ungureanu Data 17 martie 2012 23:23:59
Problema Elementul majoritar Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<stdio.h>
#include<vector>
#define FIN "elmaj.in","r",stdin
#define FOUT "elmaj.out","w",stdout
#define MOD 2011

using namespace std;

int n,x,i,sol,sol2;
vector< pair<int, int> >H[MOD];
vector<pair<int, int> >::iterator val;

vector<pair<int, int> >::iterator search(int x)
{
	int list=x%MOD;
	vector<pair<int, int> >::iterator it;
	for(it=H[list].begin();it!=H[list].end();++it)
		if((*it).first==x)return it;
	return H[list].end();
}

int main()
{
freopen(FIN);
freopen(FOUT);
scanf("%d",&n);
sol=sol2=-1;
for(i=1;i<=n;i++)
	{
		scanf("%d",&x);
		val=search(x);
		if(val==H[x%MOD].end())
			H[x%MOD].push_back(make_pair(x,1));
		else
		{
			H[x%MOD].erase(val);
			H[x%MOD].push_back(make_pair(x,(*val).second+1));
			if((*val).second>=n/2+1)sol=x,sol2=(*val).second;
		}
	}
printf("%d %d",sol,sol2);
return 0;
}