Cod sursa(job #2898149)

Utilizator adamemi02emanuel adam adamemi02 Data 6 mai 2022 11:06:52
Problema Planeta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<fstream>
using namespace std;
ifstream fin("planeta.in");
ofstream fout("planeta.out");


long long int p[35],k;
int n;

void sol(int nod,long long k,int val)
{
    if(!k || !nod)
        return;
    long long int cat, rest;
    int x;

    for(int i=1; i<=nod; i++)
        if(p[i-1]*p[nod-i]<k)
            k-=p[i-1]*p[nod-i];
        else
        {
            x=i;
            break;
        }

    cat = k/p[nod-x];
    rest=k%p[nod-x];
    if (rest==0) rest=p[nod-x];
    else cat++;
    fout<<x+val<<" ";
    sol(x-1,cat,val);
    sol(nod-x,rest,val+x);
}

int main ()
{
    int i,j;
    fin>>n>>k;
    p[0]=1;
    p[1]=1;
    for(i=2; i<=n; i++)
        for(j=1; j<=i; j++)
            p[i]+=p[j-1]*p[i-j];
    sol(n,k,0);
    return 0;
}