Cod sursa(job #2232070)

Utilizator BaraianTudorBaraian Tudor Stefan BaraianTudor Data 17 august 2018 11:30:52
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("elmaj.in");
ofstream out("elmaj.out");
int n,a[1000001];
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;
    // verificare
    int nr = 0;
    for (int i = 1; i <= n; i++) {
        if (a[i] == cand)
            nr++;
    }
    if (nr > n / 2)
        return cand;
    else
        return -1;
}
int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
    {
        in>>a[i];
    }
    out<<mooreMajority(n,a)<<nr;
    return 0;
}