Cod sursa(job #1474137)

Utilizator al.mocanuAlexandru Mocanu al.mocanu Data 21 august 2015 00:46:48
Problema Elementul majoritar Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.59 kb
#include <stdio.h>
#define MAX 1000005

int n, i, a[MAX], nr, rez;

int majority(int* nr);

int main(){
	freopen("elmaj.in", "r", stdin);
	freopen("elmaj.out", "w", stdout);
	scanf("%d", &n);
	for(i = 0; i < n; i++)
		scanf("%d", &a[i]);
	rez = majority(&nr);
	printf("%d %d\n", rez, nr);
	return 0;
}

int majority(int *nr){
	int cand = -1, k = 0;
	for(i = 0; i < n; i++)
		if(k == 0){
			cand = a[i];
			k = 1;
		}
		else if(a[i] == cand)
			k++;
		else
			k--;
	if(cand < 0)
		return cand;

	*nr = 0;
	for(i = 0; i < n; i++)
		if(a[i] == cand)
			(*nr)++;
	if(*nr > n / 2)
		return cand;
	return -1;
}