Pagini recente » Cod sursa (job #1467526) | Cod sursa (job #521384) | Cod sursa (job #62544) | Cod sursa (job #1540425) | Cod sursa (job #2394259)
/*
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;
}