Cod sursa(job #2050439)

Utilizator ana.pintiliciucAna Maria Pintiliciuc ana.pintiliciuc Data 28 octombrie 2017 09:53:50
Problema Elementul majoritar Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <cstdio>

using namespace std;

int n, a[1000001];

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

    return c;
}

int verif(int x)
{
    int apar=0;
    for(int i=1;i<=n;i++)
        if(a[i]==x)
            apar++;

    return apar;
}

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 apar=verif(c);

    if(apar>=n/2+1)
        printf("%d %d", c, apar);
    else printf("-1");


    return 0;
}