Cod sursa(job #1755376)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 10 septembrie 2016 00:35:05
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>

using namespace std;

int n, i, j;
long long d[33], k;

void solve(int st, int dr, long long k)
{
    if(st>dr) return;
    int i;
    long long all=0;

    for(i=st; i<=dr; ++i)
    {
        all += d[i-st]*d[dr-i];
        if(all>k)
        {
            k -= all - d[i-st]*d[dr-i];
            printf("%d ", i);
            solve(st, i-1, k/d[dr-i]);
            solve(i+1, dr, k%d[dr-i]);
            break;
        }
    }
}

int main()
{
    freopen("planeta.in", "r", stdin);
    freopen("planeta.out", "w", stdout);

    scanf("%d%lld", &n, &k);
    d[0] = 1;

    for(i=1; i<=n; ++i)
        for(j=1; j<=i; ++j)
            d[i] += d[j-1]*d[i-j];

    solve(1,n,(long long)(k-1));

    return 0;
}