Cod sursa(job #633202)

Utilizator claudiumihailClaudiu Mihail claudiumihail Data 13 noiembrie 2011 05:47:21
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#include <iostream>

using namespace std;

inline int vote(const int vec[], const int n, int& number)
{
	int k=0, cand=-1, num=0;

	for (int i=0; i<n; ++i)
	{
		if (0 == k)
		{
			cand = vec[i];
			k++;
		}
		else if (vec[i] == cand)
		{
			k++;
		}
		else
		{
			k--;
		}
	}
	
	if (cand == -1)
		return -1;
	
	for (int i=0; i<n; ++i)
	{
		if (vec[i] == cand)
			num++;
	}
	
	if (num>n/2)
	{
		number = cand;
		return num;
	}
	
	return -1;
}

int main()
{
	int n, *vec;
	fstream fin("elmaj.in", fstream::in);
	fstream fout("elmaj.out", fstream::out);
	
	fin >> n;
	//cout << n << endl;
	
	vec = new int[n];
	
	for (int i=0; i<n; ++i)
	{
		fin >> vec[i];
		//cout << vec[i] << " ";
	}
	//cout << endl;
	
	int number, times;
	
	times = vote(vec, n, number);
	if (times == -1)
		fout << -1 << "\n";
	else
		fout << number << " " << times << "\n";
	
	delete[] vec;
	
	fin.close();
	fout.close();
	return 0;
}