Cod sursa(job #1583374)

Utilizator gabib97Gabriel Boroghina gabib97 Data 28 ianuarie 2016 22:07:04
Problema Planeta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>

using namespace std;
long long n,k,i,d[31][31][31],s[31];
ifstream fin ("planeta.in");
ofstream fout ("planeta.out");
void dinamica()
{
    int i,j,l;
    s[0]=1;
    for (i=1;i<=n;i++)
        for (j=1;j<=i;j++)
            s[i]+=s[j-1]*s[i-j];
}
void FindRoot(int a,int b,long long k)
{
    int i,ad=0;
    for (i=a;ad+s[i-a]*s[b-i]<k&&i<b;i++)
        ad+=s[i-a]*s[b-i];
    fout<<i<<" ";
    if (a<=i-1) FindRoot(a,i-1,(k-ad-1)/s[b-i]+1);
    if (i+1<=b) FindRoot(i+1,b,(k-ad-1)%s[b-i]+1);
}
int main()
{
    fin>>n>>k;
    dinamica();
    FindRoot(1,n,k-1);
    fin.close();
    fout.close();
    return 0;
}