Cod sursa(job #1664892)

Utilizator medicinedoctoralexandru medicinedoctor Data 26 martie 2016 14:58:12
Problema Elementul majoritar Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 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()
{
	for (long long i=1; i<=n; i++)
		if (q[i]!=0) { 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()
{
	ofstream f("elmaj.out");
	if (y!=0) f << y << ' ' << nn(); 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();
}

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