Cod sursa(job #1163853)

Utilizator Alexghita96Ghita Alexandru Alexghita96 Data 1 aprilie 2014 17:33:54
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <cstdio>

#define Nmax 1000005

int N, A[Nmax];

void Citire()
{
    scanf("%d", &N);
    for (int i = 1; i <= N; ++i)
        scanf("%d", &A[i]);
}

void Rezolvare()
{
    int cand = -1, k = 0, nr = 0;

    for (int i = 1; i <= N; ++i)
    {
        if (k == 0)
        {
            cand = A[i];
            k = 1;
        }
        else if (cand == A[i])
            k++;
        else
            k--;
    }

    if (cand < 0)
        printf("-1");
    for (int i = 1; i <= N; ++i)
        if (A[i] == cand)
            nr++;
    if (nr < N / 2 + 1)
        printf("-1");
    else
        printf("%d %d", cand, nr);
}

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

    Citire();
    Rezolvare();

    return 0;
}