Cod sursa(job #709872)

Utilizator fhandreiAndrei Hareza fhandrei Data 8 martie 2012 17:34:38
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
//Include
//#include <stdio.h>
#include <fstream>
#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");
	ifstream in("elmaj.in");
	ofstream out("elmaj.out");
	//fscanf(in, "%d", &n);
	in >> n;
	for(int i=1 ; i<=n ; ++i)
	{
		//fscanf(in, "%d",&citit);
		in >> 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);
		out << elemMax << " " <<  aparitiiMax;
	//else fprintf(out, "-1");
	else
		out << -1;
	
	
	//fclose(in);
	//fclose(out);
	in.close() , out.close();
	return 0;
}