Pagini recente » Cod sursa (job #2609078) | Cod sursa (job #2485696) | Cod sursa (job #1312590) | Cod sursa (job #2854954) | Cod sursa (job #633993)
Cod sursa(job #633993)
#include <fstream>
using namespace std;
ifstream in("elmaj.in");
ofstream out("elmaj.out");
const int N=1000001;
int v[N],n,win,contor;// win este posibilul element majoritar
int main(){
int i;
in>>n;
win=v[1];//initializam posibilul element majoritar ca fiind primul din vector
contor=1;//setam contorl cu valoarea 1 intrucat acesta a aparut o singura data
for(i=2;i<=n;++i){
in>>v[i];
if(contor==0){//nu mai avem niciun element posibil majoritar
win=v[i];//reinitializam posibilul element majoritar cu valoarea curenta si trecem la urmatoarea valoare
contor=1;
continue;
}
if(v[i]==win)//daca elementul curent este acelasi cu cel posibil majoritar incrementam contorul
contor++;
else//elementul curent anuleaza o aparitie a posibilului element majoritar
contor--;
}
contor=0;//resetam contorul pentru a numara toate aparitiile posibilului element majoritar din vectorul citit
for(i=1;i<=n;++i){
if(v[i]==win)
contor++;
}
if(contor>=(n/2)){//daca contorul este >= [n/2]
out<<win<<" "<<contor;
}
else
out<<"-1";
return 0;
}