Pagini recente » Cod sursa (job #2118714) | Cod sursa (job #3258899) | Cod sursa (job #1852774) | Cod sursa (job #2480328) | Cod sursa (job #633984)
Cod sursa(job #633984)
#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] atunci elementul posibil devine sigur majoritar
out<<win<<" "<<contor;
}
else
out<<"-1";//altfel nu exista element majoritar
return 0;
}