Cod sursa(job #1378432)

Utilizator BonCipBonciocat Ciprian Mircea BonCip Data 6 martie 2015 12:10:27
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>
#define N_MAX 1000000

int v[N_MAX];

int main()
{
	FILE *fin, *fout;
	fin = fopen("elmaj.in", "r");
	fout = fopen("elmaj.out", "w");

	int N;
	fscanf(fin, "%d", &N);

	int i;
	int el = -1, pwr = 0;
	for (i = 0; i < N; ++i) {
		fscanf(fin, "%d", v + i);
		if (v[i] == el) {
			++pwr;
		} else if (pwr == 0) {
			el = v[i];
			pwr = 0;
		} else {
			--pwr;
		}
	}

	int apar = 0;
	for (i = 0; i < N; ++i) {
		apar += (v[i] == el);
	}

	if (apar >= N / 2 + 1) {
		fprintf(fout, "%d %d\n", el, apar);
	} else {
		fprintf(fout, "-1\n");
	}

	fclose(fin);
	fclose(fout);
	return 0;
}