Cod sursa(job #2110469)

Utilizator mihailrazMihail Turcan mihailraz Data 20 ianuarie 2018 18:01:58
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>
#define NMAX 1000000

using namespace std;
ifstream fi("elmaj.in");
ofstream fo("elmaj.out");
int n, k, nr, rez;
int X[NMAX+5];

void citire(void)
{
    fi>>n;
    for(int i=1; i<=n; i++)
        fi>>X[i];
}

int elmaj(void)
{
    int cand=-1;
    for(int i=1; i<=n; i++)
    {
        if(k==0)
        {
            cand=X[i];
            k=1;
        }
        else
        {
            if(X[i]==cand)
                k++;
            else
                k--;
        }
    }
    if(cand<0)
        return cand;
    for(int i=1; i<=n; i++)
        if(X[i]==cand)
            nr++;
    if(nr>n/2)
        return cand;
    return -1;
}

int main()
{
    citire();
    rez=elmaj();
    fo<<rez<<" "<<nr;
    fi.close();
    fo.close();
    return 0;
}