Pagini recente » Cod sursa (job #2445378) | Cod sursa (job #872813) | Cod sursa (job #5438) | Cod sursa (job #279463) | Cod sursa (job #2623489)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("planeta.in");
ofstream fout("planeta.out");
#define int long long
const int DIM = 33;
int dp[DIM][DIM];
int cnt[DIM];
void solve(int n, int k, int add = 0)
{
if(n == 0)
return ;
if(n == 1)
{
fout << add + 1 << ' ';
return ;
}
for(int i = 1; i <= n; ++i)
{
if(dp[n][i] < k)
{
k -= dp[n][i];
continue;
}
fout << i + add << ' ';
solve(i - 1, (k - 1) / cnt[n - i] + 1, add);
solve(n - i, (k - 1) % cnt[n - i] + 1, add + i);
return ;
}
}
main()
{
int n, k;
fin >> n >> k;
dp[0][0] = 1;
cnt[0] = 1;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= i; ++j)
{
dp[i][j] = cnt[i - j] * cnt[j - 1];
cnt[i] += dp[i][j];
}
solve(n, k);
}