Pagini recente » Cod sursa (job #2046287) | Cod sursa (job #237052) | Cod sursa (job #872802) | Cod sursa (job #2764518) | Cod sursa (job #3133724)
#include<bits/stdc++.h>
using namespace std;
ifstream in("farfurii.in");
ofstream out("farfurii.out");
long v[30], n, k, st, dr, total;
void sol(long n, long k, long val)
{
if (n == 1) {
out << val + 1 << " ";
return;
}
for (long i = 1; i <= n; i++)
{
st = v[i - 1];
dr = v[n - i];
total = st * dr;
if (total < k)
k -= total;
else
{
out << val + i << ' ';
sol(i - 1, (k - 1) / dr + 1, val);
sol(n - i, (k - 1) % dr + 1, val + i);
return;
}
}
}
int main()
{
in >> n >> k;
v[0] = 1;
for (long i = 1; i <= n; i++)
for (long j = 1; j <= i; j++)
v[i] += v[i - j] * v[j - 1];
///in v - cati bts exista pt n
//for (long i = 1; i <= n; i++)
//cout<<v[i]<< ' ';
sol(n, k, 0);
}