Cod sursa(job #709881)

Utilizator fhandreiAndrei Hareza fhandrei Data 8 martie 2012 17:40:19
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
//Include
#include <fstream>
#include <limits.h>
#include <queue>
using namespace std;

//Variabile

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

priority_queue<int> q;

//Main
int main()
{
	ifstream in("elmaj.in");
	ofstream out("elmaj.out");
	
	in >> n;
	
	for(int i=1 ; i<=n ; ++i)
	{
		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)
		out << elemMax << " " <<  aparitiiMax;
	else
		out << -1;
	
	
	in.close();
	out.close();
	return 0;
}