Pagini recente » Cod sursa (job #3248415) | Cod sursa (job #3244070) | Cod sursa (job #2424055) | Cod sursa (job #2251562) | Cod sursa (job #2537365)
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;
}