Cod sursa(job #1575221)

Utilizator Constantin1998Draghici Constantin Constantin1998 Data 21 ianuarie 2016 11:27:52
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb

#include <iostream>
#define Nmax 1000001
#include <stdio.h>

using namespace std;

int n,a[Nmax];
int mooreMajority(int n, int  a[])
 {
    int cand= -1, k = 0;
    for (int i =1; i<=n; i++) {
        if (k == 0) {
            cand = a[i];
            k = 1;
        } else if (a[i] == cand) {
            k++;
        } else
            k--;
    }
    if (cand < 0)
        return cand;
    int nr = 0;
    for (int i =1;i<=n; i++) {
        if (a[i] == cand)
            nr++;
    }
    if (nr >= n/2+1)
       printf("%d",nr);
    else
       printf("-1");
}

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