blob: 892601999a07b18f455742a2c0d5e7fe35db2a97 (
plain) (
tree)
|
|
#include <sys/param.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int compar_long (const void * a, const void * b) {
if (*(long *)a < *(long *)b)
return -1;
return *(long *)a > *(long *) b;
}
int main (void) {
long N, K, A;
scanf("%ld %ld %ld", &N, &K, &A);
long * d = (long *) malloc(N*sizeof *d);
long čet = 0;
long lastidx = 0;
long long četkončno = 1;
for (long i = 0; i < A && četkončno <= 2000000; i++) // pravzaprav četkončno := K**A,
četkončno *= K; // toda C nima int potence
// fprintf(stderr, "aaaaaaaa %ld\n", četkončno);
for (long i = 0; i < N; i++) {
scanf("%ld", d+i);
if (i && d[i-1] > d[i])
if (++čet >= četkončno) {
qsort(d+lastidx, i-lastidx, sizeof d[0], compar_long);
čet = 0;
lastidx = i;
}
}
qsort(d+lastidx, N-lastidx, sizeof d[0], compar_long);
bool devica = true;
for (long i = 0; i < N; i++) {
if (devica)
devica = false;
else
printf(" ");
printf("%ld", d[i]);
}
printf("\n");
}
|