Cod sursa(job #1664796)

Utilizator medicinedoctoralexandru medicinedoctor Data 26 martie 2016 14:35:20
Problema Elementul majoritar Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
using namespace std;

long long n,p=0,a[1000000],q[1000000];

void elmaj()
{
	for (long long i=1; i<=n; i++)
		q[i]=0;
	for (long long i=1; i<=n; i++)
	{
		int x;
		if (p==0) { p=1; q[1]=a[i]; } else
		{
			x=1;
			for (long long j=p; j>=1; j--)
				if (a[i]!=q[j]) { x=0; q[j]=0; p=p-1; break; }
			if (x==1) { p=p+1; q[p]=a[i]; }
		}
	}
}

void lire()
{
	ifstream f("elmaj.in");
	f >> n;
	for (long long i=1; i<=n; i++)
		f >> a[i];
	f.close();
}

long long co(long long *y)
{
	long long x=0; bool b=false;
	for (long long i=1; i<=n; i++)
	{
		if ((!(b)) && (q[i]!=0)) { b=true; *y=q[i]; }
		if (q[i]!=0) x++;
	}
	return x;
}

void ecrire()
{
	long long x,q=0;
	ofstream f("elmaj.out");
	x=co(&q);
	if (q==0) f << -1; else f << q << ' ' << x+(n/2)+(x % 2)-1;
	f.close();
}

int main()
{
	lire();
	elmaj();
	ecrire();
	return 0;
}