Cod sursa(job #2145123)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 27 februarie 2018 09:31:26
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>

using namespace std;

const int NMAX = 1000005;
int v[NMAX],n;

void elementMajoritar(int &elem,int &ap)
{
    int cand,k=0;
    cand = v[1];
    k = 1;
    for(int i = 2 ; i <= n ; i++)
    {
        if(cand == v[i])
            k++;
        else
            k--;
        if(k == 0)
        {
            k = 1;
            cand = v[i];
        }
    }
    int cnt = 0;
    for(int i = 1 ; i <= n ; i++)
        if(cand == v[i])
            cnt++;
    if(cnt >= n/2+1){
        elem = cand;
        ap = cnt;
        return;
    }
    elem = -1;
    ap = 0;
}

int main()
{
    freopen("elmaj.in","r",stdin);
    freopen("elmaj.out","w",stdout);
    scanf("%d",&n);
    for(int i = 1 ; i <= n ; i++)
        scanf("%d",&v[i]);
    int e , cnt;
    elementMajoritar(e,cnt);
    if(e == -1)
        printf("-1");
    else
        printf("%d %d",e,cnt);
    return 0;
}