Cod sursa(job #1040867)

Utilizator sziliMandici Szilard szili Data 25 noiembrie 2013 01:07:23
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

#define MAX_N 1000001

using namespace std;

int v[MAX_N];

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

    int n, elem;
    scanf("%d", &n);
    scanf("%d", &elem);

    int occurences = 1;
    int currentMajor = elem;
    v[0] = elem;

    for (int i=1; i<n; i++){
        scanf("%d", &elem);

        if (elem == currentMajor){
            occurences++;
        } else {
            occurences--;
        }

        if (occurences < 0){
            currentMajor = elem;
            occurences = 1;
        }

        v[i] = elem;
    }

    //check if it is indeed majority element
    occurences = 0;

    for (int i=0; i<n; i++){
        if (v[i] == currentMajor){
            occurences++;
        }
    }

    if (occurences >= (n/2 + 1)){
        printf("%d %d", currentMajor, occurences);
    } else {
        printf("-1");
    }

    return 0;
}