Cod sursa(job #797461)

Utilizator radustn92Radu Stancu radustn92 Data 14 octombrie 2012 02:54:23
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <stdio.h>
#include <vector>
#include <fstream>
#include <string>
#define NMAX 1000005
#define LMAX 12
#define MOD (1<<18)
#define pii pair <int,int>
#define pb push_back
#define mp make_pair
#define f first
#define s second
using namespace std;
int n,A[NMAX],rez,nr;
ifstream in("elmaj.in");
ofstream out("elmaj.out");
vector <pii> B[MOD];
void insert(int val,int where)
{
	B[where].pb(mp(val,1));
}
int find(int val,int where)
{
	int i,vec;
	for (i=0; i<B[where].size(); i++)
	{
		vec=B[where][i].f;
		if (vec==val)
		{
			B[where][i].s++;
			if (B[where][i].s>=n/2+1)
				rez=val,nr=B[where][i].s;
			return B[where][i].s;
		}
	}
	return 0;
}
int main()
{
	in>>n;
	int i,x;
	for (i=1; i<=n; i++)
	{
		in>>x;
		if (!find(x,x &(MOD-1)))
			insert(x,x &(MOD-1));
	}
	
	if (rez)
	{
		printf("%d %d\n",rez,nr);
		return 0;
	}
	out<<"-1\n";
	return 0;
}