Cod sursa(job #709862)

Utilizator fhandreiAndrei Hareza fhandrei Data 8 martie 2012 17:30:34
Problema Elementul majoritar Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
//Include
#include <stdio.h>
#include <limits.h>
#include <queue>
using namespace std;

//Variabile
FILE *in, *out;

int n;
int citit;
int curent = -1, nrAparitii;
int elemMax, aparitiiMax;

priority_queue<int> q;

//Main
int main()
{
	in = fopen("elmaj.in","rt");
	out = fopen("elmaj.out","wt");
	fscanf(in, "%d", &n);
	for(int i=1 ; i<=n ; ++i)
	{
		fscanf(in, "%d",&citit);
		q.push(citit);
	}
	q.push(INT_MIN);
	
	while(!q.empty())
	{
		if(q.top() == curent)
			++nrAparitii;
		else
		{
			if(nrAparitii > aparitiiMax)
			{
				aparitiiMax = nrAparitii;
				elemMax = curent;
			}
			curent = q.top();
			nrAparitii = 1;
		}
		q.pop();
	}
	
	if(aparitiiMax >= n/2+1)
		fprintf(out, "%d %d", elemMax, aparitiiMax);
	else fprintf(out, "-1");
	
	
	fclose(in);
	fclose(out);
	return 0;
}