Cod sursa(job #865800)

Utilizator sinaelglHau C sinaelgl Data 26 ianuarie 2013 23:46:50
Problema Elementul majoritar Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.71 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];
		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;
}