Pagini recente » Cod sursa (job #2493823) | Cod sursa (job #3340156) | Cod sursa (job #2187593) | Cod sursa (job #3324039) | Cod sursa (job #3342956)
#include <fstream>
using namespace std;
int v[1000001];
int n, x, i, majoritar, aparitii, nr;
int main ( ){
ifstream fin("elmaj.in");
ofstream fout("elmaj.out");
fin>>n;
fin>>v[1];
majoritar = x;
aparitii = 1;
/// cat timp aparitii este pozitiv inseamna ca majoritar apare de mai multe ori decat toate celelalte la un loc
for (i=2;i<=n;i++) {
fin>>v[i];
if (v[i] == majoritar)
aparitii++;
else {
aparitii--;
if (aparitii == 0) {
majoritar = v[i];
aparitii = 1;
}
}
}
/// algoritmul de mai sus prezice un majoritar
/// daca e sa fie vreun majoritar acela este chiar cel ramas in variabila "majoritar"
/// si daca nu exista tot ramane ceva in variabila deci trebuie ca cel scos de algoritm sa il verificam efectiv daca e majoritar
for (i=1;i<=n;i++)
if (v[i] == majoritar)
nr++;
if (nr >= n/2+1) {
fout<<majoritar<<" "<<nr<<"\n";
} else
fout<<-1;
return 0;
}