Cod sursa(job #2394259)

Utilizator raduzxstefanescu radu raduzx Data 1 aprilie 2019 14:36:40
Problema Elementul majoritar Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
/*
2. Given an array of N natural numbers, find the number that appears more than N / 2 times.
*/

#include <iostream>
#include <fstream>
using namespace std;

ifstream f("elmaj.in");
ofstream g("elmaj.out");

int nrAparitii;
int elemMajoritar(int v[], int n)
{
	int elem = v[1], count = 1;
	for (int i = 2; i <= n; i++)
	{
		if (v[i] == elem)
		{
			count++;
		}
		else
		{
			count-=1;
			if (count < 0)
			{
				count = 0;
				elem = v[i];
			}
		}
	}
	count = 0;
	for (int i = 1; i <= n; i++)
	{
		if (elem == v[i])
			count += 1;
	}
	nrAparitii=count;
	if (count > n / 2)
		return elem;
	return -1;
}
int main()
{
	int v[100], n,nr,count;
	//cout << "Numarul de elemente ale vectorului: ";
	f >> n;
	//cout << "Elementele vectorului sunt: ";
	for (int i = 1; i <= n; i++)
	{
		f >> v[i];
	}
	int elem = elemMajoritar(v, n);
	if(elem==-1)
        g<<elem;
    else
        g<<elem<<" "<<nrAparitii;
	/*if (elem == -1)
		//cout << "Nu exista element majoritar";
	else
		cout << elem;*/
	return 0;
}