Cod sursa(job #1769581)

Utilizator matei8787Matei Dobrea matei8787 Data 2 octombrie 2016 19:42:40
Problema Elementul majoritar Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<cstdio>
int v[1000007];
int main()
{
    freopen("elmaj.in","r",stdin);
    freopen("elmaj.out","w",stdout);
    int n,m,i,cand,s=1,l=0;
    scanf("%d",&n );
    for ( i = 1 ; i <= n ; i++ ){
        scanf("%d",&m );
        v[i] = m;
    }
    cand = v[1];
    for ( i = 2 ; i <= n ; i++ ){
        if ( cand == v[i] && s != 0 )
            s++;
        else
            if ( cand != v[i] && s != 0 )
                s--;
        else
            if ( s == 0 )
                cand = v[i];
    }
    for ( i = 1 ; i <= n ; i++ ){
        if ( v[i] == cand )
            l++;
    }
    if ( l > n/2 )
        printf("%d %d",cand,l);
    else
        printf("%d",-1);
}