Cod sursa(job #1759128)

Utilizator Burbon13Burbon13 Burbon13 Data 18 septembrie 2016 15:37:05
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>

using namespace std;

const int nmx = 1000002;

int n;
int v[nmx];

void citire()
{
    scanf("%d", &n);
    for(int i = 1; i <= n; ++i)
        scanf("%d", &v[i]);
}

void calcul()
{
    int el_maj = -1, nr = 0;

    for(int i = 1; i <= n; ++i)
    {
        if(v[i] == el_maj)
        {
            ++ nr;
        }
        else
        {
            -- nr;
            if(nr == -1)
            {
                el_maj = v[i];
                nr = 0;
            }
        }
    }

    nr = 0;

    for(int i = 1; i <= n; ++i)
        if(v[i] == el_maj)
           ++ nr;

    if(nr >= (n / 2) + 1)
        printf("%d %d\n", el_maj, nr);
    else
        printf("-1\n");
}

int main()
{
    freopen("elmaj.in", "r", stdin);
    freopen("elmaj.out", "w", stdout);
    citire();
    calcul();
    return 0;
}