Submission #1035268

#TimeUsernameProblemLanguageResultExecution timeMemory
1035268amine_arouaPermutation (APIO22_perm)C++17
71.22 / 100
161 ms1108 KiB
#include "perm.h" #include<bits/stdc++.h> using namespace std; #define ll long long std::vector<int> construct_permutation(long long k) { int sz = 10000; vector<int> best; for(ll l = 1 ;l < 100 ;l++) { ll x = k + l - 1; if(__builtin_popcountll(x) <= l) { int n = 0; multiset<int> bits; for(ll i = 0 ; i < 61 ; i++) { if((1ll<<i) & x) { bits.insert(i); } } bool ok = 1; while ((int)bits.size() < l) { auto it = upper_bound(bits.begin() , bits.end() ,0); if(it == bits.end()) { ok = 0; break; } int val = *it; bits.erase(it); bits.insert(val - 1); bits.insert(val - 1); } if(!ok) continue; for(auto bit : bits) n+=bit; n--; vector<int> perm; for(auto i : bits) { for(int j = n - i + 1 ; j <= n ; j++) { perm.push_back(j); } n-=i; } if((int)perm.size() < sz) { sz = (int)perm.size(); best = perm; } } } return best; } /* int main() { for(int k = 7 ; k <= 7 ; k++) { vector<int> v =construct_permutation(k); if(v != vector<int>({-1})) cout<<"OK "<<k<<'\n'; else cout<<"WA "<<k<<'\n'; } } */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...