Cod sursa(job #662092)

Utilizator AndrewTheGreatAndrei Alexandrescu AndrewTheGreat Data 15 ianuarie 2012 20:24:58
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
#include <fstream>

const int nmax = 1000001;
int N, V[nmax];

int main()
{
    std::ifstream in ("elmaj.in");
    freopen ("elmaj.out", "w", stdout);

    int i;
    in >> N;
    for(i = 1; i <= N; i++)
        in >> V[i];

    int nr, cat = 1;
    nr = V[1];
    for(i = 2; i <= N; i++)
    {
        if(V[i] == nr)
            cat++;
        else cat--;

        if(cat < 0)
            cat = 1, nr = V[i];
    }

    cat = 0;
    for(i = 1; i <= N; i++)
        cat += (V[i] == nr);

    if(cat > (N >> 1))
        printf("%d %d\n", nr, cat);
    else printf("-1");
    return 0;
}