Cod sursa(job #1552906)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 18 decembrie 2015 21:55:18
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
/*
    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;
}