Pagini recente » Cod sursa (job #2406295) | Cod sursa (job #2509264) | Cod sursa (job #2187570) | Cod sursa (job #1887428) | Cod sursa (job #1423912)
#include <stdio.h>
#define MAX_N 1000000
#define BITS 8
#define MASK ((1 << BITS) - 1)
int v[MAX_N];
int count[4][MASK];
int main(void) {
FILE *f;
int n;
f = fopen("elmaj.in", "r");
fscanf(f, "%d", &n);
for (int i = 0; i < n; i++) {
fscanf(f, "%d", &v[i]);
count[0][v[i] & MASK]++;
count[1][(v[i] >> 8) & MASK]++;
count[2][(v[i] >> 16) & MASK]++;
count[3][(v[i] >> 24) & MASK]++;
}
fclose(f);
int maj = (n >> 1) + 1;
int candidate = 0;
int i = 3;
while ((i >= 0) && (candidate != -1)) {
int j = 0;
while ((j < (1 << BITS)) && (count[i][j] < maj)) {
j++;
}
if (j == (1 << BITS)) {
candidate = -1;
} else {
candidate = (candidate << 8) | j;
}
i--;
}
int cnt = 0;
for (i = 0; i < n; i++) {
cnt += (v[i] == candidate);
}
f = fopen("elmaj.out", "w");
if (cnt >= maj) {
fprintf(f, "%d %d\n", candidate, cnt);
} else {
fputs("-1\n", f);
}
fclose(f);
return 0;
}