Cod sursa(job #721647)

Utilizator sana1987Laurentiu Dascalu sana1987 Data 23 martie 2012 22:34:36
Problema Elementul majoritar Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>


#define N 1000000

int data[N + 1];
int n, i;

void elmaj() {
    int cand = data[0];
    int count = 1;

    for (i = 1; i < n; i++) {
        if (count == 0) {
            cand = data[i];
            count = 1;
        }
        else {
            if (data[i] == cand) {
                count++;
            }
            else {
                count--;
            }
        }
    }

    count = 0;
    for (i = 0; i < n; i++)
        if (data[i] == cand)
            count++;

    count >= n/2 + 1 ? printf("%d %d\n", cand, count) : printf("-1\n");
}

int main(void) {
    freopen("elmaj.in","r",stdin);
    freopen("elmaj.out","w",stdout);
    scanf("%d", &n);
    for (i = 0; i < n ; i++) {
        scanf("%d", &data[i]);
    }

    elmaj();

    return 0;
}