Cod sursa(job #715952)

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

using namespace std;

int n,x,i,sol,sol2;
vector< pair<int, int> >H[MOD+1];
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);
			(*val).second++;
			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\n",sol,sol2);
/*for(i=1;i<=15;i++)
	for(val=H[i].begin();val!=H[i].end();++val,printf("\n"))
		printf("%d %d ",(*val).first, (*val).second);*/
for(val=H[26033%MOD].begin();val!=H[26033%MOD].end();++val)
	printf("%d %d\n",(*val).first, (*val).second);

return 0;
}