Cod sursa(job #2220986)

Utilizator inquisitorAnders inquisitor Data 12 iulie 2018 21:59:32
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>

size_t v[0xF4241];

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

    char inBuffer[0x1000000]; size_t p = 0x0;

    fread(inBuffer, 0x1, 0x1000000, stdin);

    size_t N = 0, x, candidate, unpaired = 0;

    while(0x2F < inBuffer[p])
    {
        N = N * 0xA + inBuffer[p] - 0x30;

        ++p;
    }

    ++p;

    for(size_t i = -~N; --i;)
    {
        while(0x2F < inBuffer[p])
        {
            x = x * 0xA + inBuffer[p] - 0x30;

            ++p;
        }

        ++p;

        if(x == candidate) ++unpaired;

        else if(unpaired) --unpaired;

        else
        {
            candidate = x;

            unpaired = 0x1;
        }

        v[i] = x;
    }

    unpaired = 0x0;

    for(size_t i = -~N; --i;)
    {
        unpaired += v[i] == candidate;
    }

    printf(unpaired > N >> 1 ? "%d %d" : "-1", candidate, unpaired);

    return 0x0;
}