Pagini recente » Cod sursa (job #3175990) | Cod sursa (job #3227526) | Cod sursa (job #424332) | Cod sursa (job #65928) | Cod sursa (job #1552906)
/*
Recurenta initiala nu era buna :D
*/
#include <cstdio>
#define DIM 32
using namespace std;
long long D[DIM], K, N;
void DFS (int st, int dr, long long K) {
if(st > dr)
return;
for (int i = st; i <= dr; i ++) {
if (K > D[i-st] * 1LL * D[dr-i])
K -= D[i-st] * 1LL * D[dr-i];
else {
printf ("%d ", i);
DFS (st, i-1, (K - 1) / D[dr - i] + 1);
DFS (i+1, dr, (K - 1) % D[dr - i] + 1);
break;
}
}
return;
}
int main () {
freopen ("planeta.in" ,"r", stdin );
freopen ("planeta.out","w", stdout);
scanf ("%lld %lld", &N, &K);
D[0] = 1;
for (int i = 1; i <= N; i ++)
for (int j = 1; j <= i; j ++)
D[i] += D[j-1] * 1LL * D[i-j];
DFS (1, N, K);
return 0;
}