Cod sursa(job #763454)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 2 iulie 2012 12:18:50
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;

int main()
{
	//Deschiderea fisierelor
	ifstream fin("elmaj.in");
	ofstream fout("elmaj.out");
	
	//Declararea principalelor variabile
	unsigned int i=1,n=0,aliati=1,aparitii=0,v[1000001];
	
	//Citirea numarului de alegatori
	fin>>n;
	
	//Citirea primului alegator
	fin>>v[0];
	unsigned int candidat=v[0];
	
	//Citirea restului de alegatori si determinarea candidatului care POATE fi majoritar
	for(i=1;i<n;i++)
	{
		fin>>v[i];
		
		if(v[i]==candidat)
		{
			aliati++;
		}
		else
		{
		    aliati--;
		}
		
		if(aliati==0)
		{
		   candidat=v[i];
		   aliati=1;
		}
	}
	
	//Acum verificam daca el chiar este majoritar
	for(i=0;i<n;i++)
	{
		if(v[i]==candidat)
			aparitii++;
	}
	
	//Daca exista, afisam candidatul majoritar
	if(aparitii>=n/2+1)
		fout<<candidat<<' '<<aparitii<<'\n';
	else
		fout<<"-1\n";
	
	//Incheiere
	fin.close();
	fout.close();
	
	return 0;
}