Pagini recente » Cod sursa (job #982889) | Cod sursa (job #2880966) | Cod sursa (job #606743)
Cod sursa(job #606743)
#include <stdio.h>
using namespace std;
long long n, i, j, k, d[40], f[40], sol[40], poz, m;
void back(long l, long r)
{
long i;
if(l>r) return;
for(i=l; i<=r; i++)
{
if(f[i]==0)
{
if(d[i-l]*d[r-i]*m>=k)
{
break;
}
else
{
k=k-d[i-l]*d[r-i]*m;
}
}
}
if(i>r) i=r;
m=m*d[r-i];
poz++;
sol[poz]=i;
f[i]=1;
back(l, i-1);
m=m/d[r-i];
back(i+1, r);
}
int main()
{
fin=fopen("planeta.in", "r");
fout=fopen("planeta.out", "w");
fscanf(fin,"%d %lld\n", &n, &k);
d[0]=1;
for(i=1; i<=n; i++)
{
for(j=1; j<=i; j++)
{
d[i]+=d[i-j]*d[j-1];
}
}
m=1;
back(1, n);
for(i=1; i<=n; i++)
{
fprintf(,fout"%d ", sol[i]);
}
return 0;
}