Pagini recente » Cod sursa (job #2255683) | Cod sursa (job #1588970) | Cod sursa (job #783493) | Cod sursa (job #1171185) | Cod sursa (job #1491087)
#include <fstream>
using namespace std;
ifstream f("elmaj.in");
ofstream g("elmaj.out");
const int nmax = 1000000;
unsigned int v[nmax], n;
unsigned int elementMajoritar(unsigned int &nrCand){
int k = 0, cand, nrFin = 0, i;
for(i = 1; i <= n; ++i){
if(k == 0)
cand = v[i];
else if(v[i] == cand) ++k;
else --k;
}
for(i = 1; i <= n; ++i)
if(v[i] == cand)
++nrFin;
if(nrFin >= n / 2 + 1){
nrCand = nrFin;
return cand;
}
else return -1;
}
int main(){
unsigned int nrCand, x, i;
f>>n;
for(i = 1; i <= n; ++i)
f>>v[i];
x = elementMajoritar(nrCand);
if(x != -1)
g<<x<<' '<<nrCand<<'\n';
else g<<-1<<'\n';
return 0;
}