Cod sursa(job #2523608)

Utilizator david_octavianoctavian david_octavian Data 14 ianuarie 2020 14:52:14
Problema Elementul majoritar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
int mooreMajority(int n, int[]  a) {
    int cand = -1, k = 0;
    for (int i = 0; i < n; i++) {
        if (k == 0) {
            cand = a[i];
            k = 1;
        } else if (a[i] == cand) {
            k++;   // nu am putut împerechea pe votantul i şi astfel trebuie să mărim numărul de votanţi necuplaţi
        } else
            k--;   // cuplăm votantul i cu orice votant ce îl susţine pe cand şi micşorăm astfel numărul de votanţi necuplaţi
    }
    if (cand < 0)
        return cand;
    // verificare
    int nr = 0;
    for (int i = 0; i < n; i++) {
        if (a[i] == cand)
            nr++;
    }
    if (nr > n / 2)
        return cand;
    else
        return – 1;
}