Submission #1151144

#TimeUsernameProblemLanguageResultExecution timeMemory
1151144SulAPermutation (APIO22_perm)C++20
91.33 / 100
2 ms328 KiB
#include <bits/stdc++.h>
#define all(a) begin(a), end(a)
using namespace std;

vector<int> construct_permutation(long long x) {
    int msb = 60;
    while ((1LL << msb) > x) msb--;
    vector<int> a(2*msb);
    int v = 1;
    for (int i = 0; i < msb; i++) {
        a[2*i] = v++;
    }
    v = -1e8;
    long long pow2 = 1;
    for (int j = 2*msb - 1; j >= 0; j -= 2) {
        if (x & pow2) a[j] = v++;
        pow2 <<= 1;
    }
    vector<int> b;
    for (int i : a) if (i != 0) b.push_back(i);
    map<int,int> ind;
    for (int i = 0; i < b.size(); i++) ind[b[i]] = i;
    v = 0;
    for (auto [p, q] : ind) {
        b[q++] = v++;
    }
    return b;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...