Submission #852969

#TimeUsernameProblemLanguageResultExecution timeMemory
852969adhityamvPermutation (APIO22_perm)C++17
0 / 100
1 ms348 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long vector<int> construct_permutation(ll k){ ll pow4[30]={}; pow4[0]=1; for(int i=1;i<30;i++) pow4[i]=pow4[i-1]*4LL; vector<int> qnry; int e=29; while(pow4[e]>k) e--; while(e>=0){ qnry.push_back(k/pow4[e]); k%=pow4[e]; e--; } vector<int> ans; bool fxd=false; int m=(int) qnry.size(); int mx=0; int mn=-1; int smpos=-1; int ind=0; if(qnry[0]==2){ ans.push_back(0); ind++; mx=1; smpos=0; } if(qnry[0]==3){ ans.push_back(1); ans.push_back(0); ind+=2; mx=2; smpos=1; fxd=true; } for(int i=1;i<m;i++){ if(qnry[i]<=1){ ans.push_back(mx); ans.push_back(mx+1); mx+=2; ind+=2; if(qnry[i]==1){ smpos=ind; ans.push_back(mn); ind++; mn--; fxd=true; } } if(qnry[i]==2){ ans.push_back(mx); smpos=ind+1; ans.push_back(mn); mn--; ans.push_back(mx+1); ind+=3; mx+=2; fxd=true; } if(qnry[i]==3){ if(!fxd){ ans.push_back(mx); ans.push_back(mn); mn--; ans.push_back(mx+1); mx+=2; smpos=ind+3; ans.push_back(mn); mn--; ind+=4; fxd=true; } else{ ans.push_back(mx); ans.push_back(mn+1); ans.push_back(mx+1); ind+=3; ans[smpos]--; mn--; } } } int l=ans.size(); for(int i=0;i<l;i++) ans[i]-=(mn+1); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...