Cod sursa(job #2169419)

Utilizator catalinlupCatalin Lupau catalinlup Data 14 martie 2018 15:21:58
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <bits/stdc++.h>
#define INFILE "elmaj.in"
#define OUTFILE "elmaj.out"
using namespace std;
ifstream in(INFILE);
ofstream out(OUTFILE);
vector<int> elemente;
int N;
void Read(){
    in>>N;
    for(int i=1;i<=N;i++){
        int x;
        in>>x;
        elemente.push_back(x);
    }
}
void BoyerMoore(){
    int count=0;
    int candidate=0;
    for(auto e:elemente){
        //cout<<candidate<<"\n";
        if(count==0){
            candidate=e;
            count=1;
            continue;
        }
        else{
            if(e==candidate)
                count++;
            else
                count--;
        }
    }
    //cout<<count<<"\n";
    if(count==0){
        out<<-1;
        return;
    }
    count=0;
    for(auto e:elemente){
        if(e==candidate)
            count++;
    }
    if(count>N/2){
        out<<candidate<<" "<<count;
    }
    else{
        out<<-1;
    }
}
int main(){
    Read();
    BoyerMoore();
    return 0;
}