Cod sursa(job #634507)

Utilizator vlad.maneaVlad Manea vlad.manea Data 16 noiembrie 2011 16:32:28
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#define NMax 1000000
using namespace std;

unsigned array[NMax], index, size, candidate, counter;

int main()
{
	ifstream fin("elmaj.in");
	ofstream fout("elmaj.out");
	fin >> size;
		
	for (index = 0; index < size; ++index)
		fin >> array[index];
	
	counter = 1;
	candidate = array[0];
	
	for (index = 1; index < size; ++index)
	{
		if (array[index] != candidate)
		{
			--counter;
			
			if (counter == 0)
			{
				candidate = array[index];
				counter = 1;
			}			
		}
		else
			++counter;
	}
	
	for (index = 0, counter = 0; index < size; ++index)
		if (candidate == array[index])
			++counter;
		
	if (counter > size / 2)
		fout << candidate << ' ' << counter << '\n';
	else
		fout << -1 << '\n';
		
	fin.close();
	fout.close();
	return 0;
}