Cod sursa(job #1664874)

Utilizator medicinedoctoralexandru medicinedoctor Data 26 martie 2016 14:52:16
Problema Elementul majoritar Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
using namespace std;

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

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

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

long long nn()
{
	long long w=0;
	for (long long i=1; i<=n; i++)
		if (a[i]==y) w++;
	return w;
}

void ecrire()
{
	long long x=nn();
	ofstream f("elmaj.out");
	if (x>(n/2)) f << y << ' ' << x; else f << -1;
	f.close();
}

void elmaj()
{
	for (long long i=1; i<=n; i++)
	{
		if (p==0) { p=1; q[1]=a[i]; } else
		{
			int 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]; }
		}
	}
	co(&y);
}

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