Cod sursa(job #1491088)

Utilizator bogdanciurezubogdan ciurezu bogdanciurezu Data 24 septembrie 2015 19:36:23
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>

using namespace std;

ifstream f("elmaj.in");
ofstream g("elmaj.out");

const int nmax = 1005000;
unsigned int v[nmax], n;

unsigned int elementMajoritar(unsigned int &nrCand){
	int k = 0, cand, nrFin = 0, i;

	for(i = 1; i <= n; ++i){
		if(k == 0){
			cand = v[i];
			k = 1;
		}
		else if(v[i] == cand) ++k;
		else --k;
	}

	for(i = 1; i <= n; ++i)
		if(v[i] == cand)
			++nrFin;

	if(nrFin >= n / 2 + 1){
		nrCand = nrFin;
		return cand;
	}
	else return -1;
}

int main(){
	unsigned int nrCand, x, i;

	f>>n;
	for(i = 1; i <= n; ++i)
		f>>v[i];

	x = elementMajoritar(nrCand);

	if(x != -1)
		g<<x<<' '<<nrCand<<'\n';
	else g<<-1<<'\n';

	return 0;
}