Submission #1225146

#TimeUsernameProblemLanguageResultExecution timeMemory
1225146KALARRYPermutation (APIO22_perm)C++20
0 / 100
445 ms327680 KiB
//chcockolateman #include<bits/stdc++.h> using namespace std; std::vector<int> construct_permutation(long long k) { k--; int counter = -1; vector<int> seq; vector<bool> swapped; int turn = 0; while(k) { turn++; if(turn==1 || k==1) { int pos = 0; while((1ll<<(pos+1)) - 1 <= k) pos++; seq.push_back(pos); counter += pos; swapped.push_back(false); // printf("Pos = %d\n",pos); k -= ((1ll<<pos) - 1); } else { int pos = 0; while((1ll<<(pos+1)) <= k) pos++; seq.push_back(pos); counter += pos; swapped.push_back(true); } } vector<int> ret; for(int L = 0 ; L < seq.size() ; L++) { int last = ret.size() - 1; counter = counter - seq[L] + 1; for(int i = 1 ; i <= seq[L] ; i++) ret.push_back(counter++); counter = counter - seq[L] - 1; if(swapped[L]) swap(ret[last],ret[last+1]); } return ret; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...