Cod sursa(job #2050395)

Utilizator cristina-criCristina cristina-cri Data 28 octombrie 2017 09:45:17
Problema Elementul majoritar Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <cstdio>

using namespace std;

int n,a[1000005];

int maj()
{
    int nr=1,c=a[1];
    for(int i=2;i<=n;i++)
    {
        if(nr == 0)
        {
            c=a[i];
            nr=1;
        }
        else
            if(a[i] == a[i-1])
                nr++;
        else
            nr--;
    }
    return c;
}

int verif(int c)
{
    int nr=0;
    for(int i=1;i<=n;i++)
    {
        if(a[i]==c)
            nr++;
    }
    if(nr >= n/2+1)
        return nr;
    return -1;
}

int main()
{
    freopen("elmaj.in","r",stdin);
    freopen("elmaj.out","w",stdout);

    scanf("%d",&n);

    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    int c=maj();
    int nr=verif(c);
    if(nr != -1)
        printf("%d %d",c,nr);
    else
        printf("-1");
    return 0;
}