Pagini recente » Cod sursa (job #2669736) | Cod sursa (job #1390379) | Cod sursa (job #312870) | Cod sursa (job #2989669) | Cod sursa (job #1641369)
#include<stdio.h>
int binary_count(int *v, char *visited, int n, int left, int right) {
if(right < left) {
return 0;
}
if(right == left) {
if(v[right] == n) {
visited[right] = 1;
return 1;
}
return 0;
}
int middle = (right - left) / 3;
return binary_count(v, visited, n, left, left + middle) +
binary_count(v, visited, n, left + middle + 1, left + 2 * middle) +
binary_count(v, visited, n, left + 2*middle + 1, right);
}
int main() {
int size, i;
FILE *fi = fopen("elmaj.in", "r");
fscanf(fi, "%d", &size);
int vect[size];
for(i = 0; i < size; i++) {
fscanf(fi, "%d", &vect[i]);
}
fclose(fi);
int majoritar = 0, counter = 0, aux_c;
char visited[size];
for(i = 0; i < size; i++) {
visited[i] = 0;
}
for(i = 0; i < size; i++) {
if(visited[i] == 1) {
continue;
}
aux_c = binary_count(vect, visited, vect[i], 0, size - 1);
if(aux_c > counter) {
counter = aux_c;
majoritar = vect[i];
}
}
if(counter >= (size/2 + 1)) {
FILE *fo = fopen("elmaj.out", "w");
fprintf(fo, "%d %d", majoritar, counter);
fclose(fo);
}
return 0;
}