Pagini recente » Istoria paginii runda/info_bv_11-12-1 | Cod sursa (job #567749) | Cod sursa (job #1893070) | Cod sursa (job #2360423) | Cod sursa (job #1693606)
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main() {
FILE *input, *output;
int limit, size, index, position, current;
int *stack;
input = fopen("combinari.in", "r");
fscanf(input, "%d %d\n", &limit, &size);
fclose(input);
stack = (int*) malloc(sizeof(int) * (size));
for(index = 0; index < size; index += 1) {
stack[index] = 0;
}
output = fopen("combinari.out", "w");
position = 0;
while (position > -1) {
if (position < size) {
current = stack[position];
if (current <= limit - (limit - position) + 1) {
if (position != 0 && stack[position] <= stack[position - 1]) {
stack[position] += stack[position - 1] + 1;
} else {
stack[position] += 1;
}
position += 1;
} else {
stack[position] = 0;
position -= 1;
}
} else {
stack[position] = 0;
position -= 1;
for(index = 0; index < size; index += 1) {
fprintf(output, "%d ", stack[index]);
}
fprintf(output, "\n");
}
}
fclose(output);
return 0;
}