Cod sursa(job #772457)

Utilizator raluca_vacaruVacaru Raluca-Ioana raluca_vacaru Data 29 iulie 2012 19:23:15
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>

using namespace std;

int n, a[1000001];

void mooreMajority (int n, int a[]) {
	int cand = -1, k = 0, i;
	for (i=0; i<n; ++i) {
		if (k == 0) {
			cand = a[i];
			k = 1;
		}
		else if (cand == a[i]) 
			++k;
		else
			--k;
	}
	int nr = 0;
	for (i=0; i<n; ++i)
		if (a[i] == cand) 
			++nr;
	freopen ("elmaj.out", "w", stdout);
	if (nr > n/2) printf ("%d %d", cand, nr);
	else printf ("-1");	
	fclose (stdout);
}

void read (int &n, int a[]) {
	freopen ("elmaj.in", "r", stdin);
	scanf ("%d", &n);
	for (int i=0; i<n; ++i)
		scanf ("%d", &a[i]);
	fclose (stdin);
}

int main () {
	read (n, a);
	mooreMajority(n, a);
	return 0;
}