Pagini recente » Cod sursa (job #2845665) | Cod sursa (job #1204823) | Cod sursa (job #1141599) | Cod sursa (job #2093188) | Cod sursa (job #2523608)
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;
}