Cod sursa(job #865798)

Utilizator sinaelglHau C sinaelgl Data 26 ianuarie 2013 23:44:24
Problema Elementul majoritar Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.76 kb
#include <stdio.h>

int v[1000000];
int v_len = 0;
int main()
{
	FILE *fin = fopen("elmaj.in", "r");
	FILE *fout = fopen("elmaj.out", "w");
	int i;
	fscanf(fin, "%d", &v_len);
	for (i = 0; i < v_len ; i++) {
		fscanf(fin, "%d", &v[i]);
	}

	
	int current_candidate = -1, current_tally = 0;
	for (i = 0; i < v_len; i++) {
		if ( current_tally == 0 ) {
			current_candidate = v[i];
			current_tally = 1;
		}
		else {
			if (v[i] == current_candidate)
				current_tally++;
			else
				current_tally--;
		}
	}

	int final_tally = 0;
	for (i = 0; i < v_len; i++)
		if (v[i] == current_candidate)
			final_tally++;

	if (final_tally > v_len/2)
		fprintf(fout, "%d %d\n", current_candidate, final_tally);
	else
		fprintf(fout, "-1\n");
	

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