Cod sursa(job #2533229)

Utilizator NashikAndrei Feodorov Nashik Data 28 ianuarie 2020 20:56:25
Problema Planeta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
//#include <iostream>
#include <fstream>
using namespace std;
long long d[35];
int answer[40],poz;
void rec(int n,long long k,int mom){
    if(n==0)
        return;
    int curent=1;
    while(k>=d[curent-1]*d[n-curent]){
        k-=d[curent-1]*d[n-curent];
        curent++;
    }
    answer[++poz]=curent+mom;
    rec(curent-1,k/d[n-curent],mom);
    rec(n-curent,k%d[n-curent],mom+curent);
}
int main()
{
    ifstream cin("planeta.in");
    ofstream cout("planeta.out");
    long long n,k;
    cin>>n>>k;
    d[0]=1;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i;j++){
            d[i]+=d[j-1]*d[i-j];
        }
    }
    k--;
    rec(n,k,0);
    for(int i=1;i<=n;i++)
        cout<<answer[i]<<" ";
    return 0;
}