Cod sursa(job #2751699)

Utilizator MoraruLiviuMoraru Mihai-Liviu MoraruLiviu Data 15 mai 2021 16:35:45
Problema Planeta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream in("planeta.in");
ofstream out("planeta.out");
int N;
long long K;
long long arbori[33];

void generare(int N)
{
    arbori[0] = 1;
    for(int i=1; i<=N; ++i)
    {
        for(int j = 1; j <= i; ++j)
        {
            arbori[i] += arbori[j-1]*arbori[i-j];
        }
    }
}

void cautare(short radacina, short N, long long K)
{
    if(N==0)
        return;

    if(N==1)
    {
        out<<radacina+1<<" ";
        return;
    }

    for(int i=1 ; i<=N; i++)
    {
        if(arbori[i-1]*arbori[N-i] >= K)
        {
            out<< radacina+i<<" ";
            cautare(radacina,   i-1, (K-1)/arbori[N-i]+1);
            cautare(radacina+i, N-i, (K-1)%arbori[N-i]+1);
            return;
        }
        K -= arbori[i-1]*arbori[N-i];
    }
}
int main()
{
    in>>N>>K;
    generare(N);
    cautare(0,N,K);
    return 0;
}