Submission #742503

#TimeUsernameProblemLanguageResultExecution timeMemory
742503keisuke6Permutation (APIO22_perm)C++17
91.33 / 100
3 ms340 KiB
#include "perm.h" #include <vector> #include <iostream> #include <set> #include <map> #include <algorithm> using namespace std; vector<int> construct_permutation(long long k) { vector<int> A = {}; int now = 300; long long ans = 1; while(ans*2 <= k){ A.push_back(now); ans *= 2; now++; } set<int> B; int n = A.size(); for(int i=0;i<=n;i++){ if((1ll<<(n-i))+ans <= k){ B.insert(i); ans += (1ll<<(n-i)); } } vector<int> Ans = {}; now = 100; for(int i=0;i<n;i++){ if(B.count(i)) Ans.push_back(now); Ans.push_back(A[i]); now--; } if(B.count(n)) Ans.push_back(now); n = Ans.size(); vector<int> Ansc = Ans; sort(Ans.begin(),Ans.end()); map<int,int> m; for(int i=0;i<n;i++) m[Ans[i]] = i; vector<int> Ans_ = {}; for(int i=0;i<n;i++) Ans_.push_back(m[Ansc[i]]); return Ans_; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...