Cod sursa(job #1798942)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 5 noiembrie 2016 16:39:35
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
# include <fstream>
# define DIM 33
using namespace std;
ifstream fin("planeta.in");
ofstream fout("planeta.out");
long long v[DIM][DIM],s[DIM],k;
int n,i,j;
void find(int n,long long k,int p){
    long long s1=0;
    if(!n)
        return;
    for(int i=1;i<=n;i++){
        s1+=v[n][i];
        if(s1>=k){
            fout<<i+p<<" ";
            k-=s1-v[n][i];
            if(k%s[n-i]){
                find(i-1,k/s[n-i]+1,p);
                find(n-i,k%s[n-i],i+p);
            }
            else{
                find(i-1,k/s[n-i],p);
                find(n-i,s[n-i],i+p);
            }
            return;
        }
    }
}
int main () {
    fin>>n>>k;
    s[0]=1;
    for(i=1;i<=n;i++)
        for(j=1;j<=i;j++){
            v[i][j]=s[j-1]*s[i-j];
            s[i]+=v[i][j];
        }
    find(n,k,0);
    fout<<"\n";
    return 0;
}