Cod sursa(job #1506560)

Utilizator PikachuPikachu Pikachu Data 20 octombrie 2015 19:51:05
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
#include <cstdio>
#include <cstring>
using namespace std;

const int DIM = 10;

char buff[DIM];

int poz = 0;

void citeste(int &numar) {
    numar = 0;
    while(buff[poz] < '0' || buff[poz] > '9') {
        if(++ poz == DIM)
            fread(buff, 1, DIM, stdin), poz = 0;
    }
    while(buff[poz] >= '0' && buff[poz] <= '9') {
        numar = numar * 10 + buff[poz] - '0';
                if(++ poz == DIM)
            fread(buff, 1, DIM, stdin), poz = 0;
    }
}

int main() {
    freopen("elmaj.in", "r", stdin);
    freopen("elmaj.out", "w", stdout);
    int n, x, nr_apar = 0, prep;
    citeste(n);
    for(int i = 1; i <= n; ++ i) {
        citeste(x);
        if(i == 1) {
            prep = x;
            nr_apar = 1;
        }
        if(prep == x)
        ++ nr_apar;
        else
            --nr_apar;
        if(nr_apar == 0) {
            prep = x;
            nr_apar = 1;
        }
    }
freopen("elmaj.in", "r", stdin);
memset(buff, 0 , sizeof(buff));
    citeste(n);
    nr_apar = 0;

    for(int i = 1; i <= n; ++ i) {
       citeste(x);
        if(prep == x) {
            ++ nr_apar;
        }
    }

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

    return 0;
}