Cod sursa(job #2751018)

Utilizator gabrielanideleaNidelea Gabriela-Andreea gabrielanidelea Data 13 mai 2021 21:11:03
Problema Planeta Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("planeta.in");
ofstream g("planeta.out");
int n;
long long dp[35];
long long k;
void func(int x)
{
    dp[0] = 1;
    for(int i = 1; i <= x; ++i)
        for(int j = 1; j <= i; ++j)
            dp[i] += dp[j-1]*dp[i-j];
}
void gasire(int start, long long k, int n)
{
    g << k << " ";
    if(n == 0)
        return;

    if(n == 1)
    {
        g << start + 1<<" ";
        return;
    }

    for(int i = 1 ; i <= n; i++)
    {
        if(dp[i-1]*dp[n-i] >= k)
        {
            g << start + i<<" ";
            gasire(start, i - 1, (k-1) / dp[n-i] + 1);
            gasire(start + i, n - i, (k-1) % dp[n-i] + 1);
            return;
        }
        k -= dp[i - 1]*dp[n - i];
    }
}

int main()
{
    f>>n>>k;
    func(n);
    gasire(0, k, n);
    return 0;
}