Cod sursa(job #406418)

Utilizator freak93Adrian Budau freak93 Data 1 martie 2010 15:20:18
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<fstream>

using namespace std;

const char iname[]="planeta.in";
const char oname[]="planeta.out";
const int maxn=35;

ifstream f(iname);
ofstream g(oname);

long long a[maxn],i,n,k,bt[maxn],j;

void calc(long long x,long long y,long long k)
{
    if(x>y)
        return;
    if(x==y)
    {
        g<<x<<" ";
        return;
    }
    long long pos=0,i;
    for(i=x;i<=y;++i)
        if((pos+=bt[i-x]*bt[y-i])>=k)
        {
            pos-=bt[i-x]*bt[y-i];
            break;
        }
    g<<i<<" ";
    calc(x,i-1,(k-pos-1)/bt[y-i]+1);
    calc(i+1,y,(k-pos-1)%bt[y-i]+1);
}

int main()
{
    f>>n>>k;
    bt[0]=1;
    for(i=1;i<=n;++i)
        for(j=0;j<i;++j)
            bt[i]+=bt[j]*bt[i-j-1];

    calc(1,n,k);
    g<<"\n";

    f.close();
    g.close();

    return 0;
}