Cod sursa(job #2940598)

Utilizator AztecaVlad Tutunaru 2 Azteca Data 15 noiembrie 2022 21:55:24
Problema Planeta Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
#define ll long long

using namespace std;

ifstream fin("planeta.in");
ofstream fout("planeta.out");

ll dp[35][35];
ll sum[35];
int n, k;

void print(int start, int sz, ll k) {
    if (sz == 0)
        return;

    if (sz == 1) {
        fout << start + 1 << " ";
    }
    else {
        for (int i = 1; i <= sz; i++) {
            if (sum[i - 1] * sum[sz - i] >= k) {
                fout << start + i << " ";
                print(start, i - 1, (k - 1) / sum[sz - i] + 1);
                print(start, sz - i, (k - 1) % sum[sz - i] + 1);
                return;
            }
            k -= sum[i - 1] * sum[sz - i];
        }
    }
}

signed main() {
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);

    fin >> n >> k;

    dp[0][0] = 1;
    sum[0] = 1;

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

    return 0;
}