Cod sursa(job #2138429)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 21 februarie 2018 17:17:27
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<bits/stdc++.h>
using namespace std;
long long dp[35],k;
int n;
inline void Solve(int st,int dr,long long k)
{
    if(st>dr) return;
    for(int i=st;i<=dr;i++)
    {
        int x=i-st;
        int y=dr-i;
        if(k>dp[x]*dp[y]) k-=dp[x]*dp[y];
            else
        {
            printf("%d ",i);
            long long ax,ay;
            ax=k/dp[y];
            if(k%dp[y]) ax++;
            if(!(k%dp[y])) ay=dp[y];
                else ay=k%dp[y];
            Solve(st,i-1,ax);
            Solve(i+1,dr,ay);
            return;
        }
    }
}
int main()
{
    freopen("planeta.in","r",stdin);
    freopen("planeta.out","w",stdout);

    scanf("%d%lld",&n,&k);


    dp[0]=1LL;
    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<=i;j++)
        {
            dp[i]+=dp[i-j-1]*dp[j];
        }
    }

    Solve(1,n,k);
    return 0;
}