제출 #1346182

#제출 시각아이디문제언어결과실행 시간메모리
1346182nagorn_ph순열 (APIO22_perm)C++20
10 / 100
1092 ms327680 KiB
#include "perm.h"
#include <bits/stdc++.h>
#define int long long
#define emb emplace_back
#define pii pair <int32_t, int32_t>
#define tiii tuple <int32_t, int32_t, int32_t>
#define all(a) a.begin(), a.end()

using namespace std;

const int N = 1e5 + 5;
const int inf = 1e18;

vector<int32_t> construct_permutation(long long k){
    k--;
	vector <int> val(45);
    int mul = 2;
    for (int i = 1; i <= 40; i++) {
        val[i] = mul - 1;
        mul *= 2;
    }
    vector <int> need;
    for (int i = 40; i >= 1; i--) {
        while (k >= val[i]) k -= val[i], need.emb(i);
    }
    int sum = accumulate(all(need), 0ll);
    int cur = sum - 1;
    vector <int32_t> ans;
    for (auto e : need) {
        int x = cur - e + 1;
        while (x <= cur) ans.emb(x++);
        cur -= e;
    }
    return ans;
}

/*
1: {}
2: {1}
3: {1, 0}
4: {0, 1}
5: 2^2 + 2^0 : {2, 0, 1}
6: 5: find xi such that sum(2^xi - 1) = 5 -> 2^2-1 + 2^1-1 + 2^1-1 = {2, 3, 1, 0}
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...