Cod sursa(job #634392)

Utilizator vlad.maneaVlad Manea vlad.manea Data 16 noiembrie 2011 10:48:27
Problema Elementul majoritar Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#define NMax 1000000

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

int main()
{
	freopen("elmaj.in", "r", stdin);
	freopen("elmaj.out", "w", stdout);
		
	for (scanf("%u", &size), iterator = 0; iterator < size; ++iterator)
		scanf("%u", array + iterator);
	
	counter = 1;
	candidate = array[0];
	
	for (iterator = 1; iterator < size; ++iterator)
	{
		if (array[iterator] != candidate)
		{
			--counter;
			
			if (counter == 0)
			{
				candidate = array[iterator];
				counter = 1;
			}			
		}
		else
			++counter;
	}
	
	for (iterator = 0, counter = 0; iterator < size; ++iterator)
		if (candidate == array[iterator])
			++counter;
		
	if (counter > size / 2)
		printf("%u %u\n", candidate, counter);
	else
		printf("-1\n");
	
	return 0;
}