Submission #1225302

#TimeUsernameProblemLanguageResultExecution timeMemory
1225302SpyrosAlivPermutation (APIO22_perm)C++20
91.33 / 100
1 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int LOG = 64; vector<int> construct_permutation(ll k) { k--; vector<int> perm; vector<int> bits; ll curr = 0; for (int i = 0; i < LOG; i++) { curr |= (1LL << i); if (k >= curr) { bits.push_back(i); } else break; } //curr /= 2; //k -= curr; if (k == curr/2) { return bits; } vector<int> after; bool flag = false; for (int i = LOG-1; i >= 0; i--) { if (!((k >> i) & 1)) continue; if (!flag) { flag = true; } else { for (int j = 0; j < (int)bits.size(); j++) { if (bits[j] >= i) bits[j]++; } bits.push_back(i); } } for (auto &x: bits) x++; bits.push_back(0); return bits; } bool check(vector<int> a, ll x) { x--; int n = a.size(); vector<ll> dp(n, 0); dp[0] = 1; x--; for (int i = 1; i < n; i++) { dp[i] = 1; for (int j = 0; j < i; j++) { if (a[j] < a[i]) { dp[i] += dp[j]; } } x -= dp[i]; } if (x == 0) return true; else return false; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...