This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "perm.h"
#pragma GCC optimize("Ofast")
using namespace std;
typedef long long ll;
vector<int>construct_permutation(ll x){
if(x<=3)return x==1?vector<int>{}:(x==2?vector<int>{0}:vector<int>{1,0});
auto ans=construct_permutation(x/4);
int n=ans.size();
if((x&3)==0){ans.insert(ans.end(),{n,n+1});}
if((x&3)==1){ans.insert(ans.end(),{n,n+1,-1});}
if((x&3)==2){ans.insert(ans.end(),{n,-1,n+1});}
if((x&3)==3){
int zero=find(ans.begin(),ans.end(),0)-ans.begin(),one=find(ans.begin(),ans.end(),1)-ans.begin();
if(one<zero)ans[one]--,ans[zero]--,ans.insert(ans.end(),{n,n+1,1});
else ans.insert(ans.end(),{n,-1,n+1,-2});
}
int mn=*min_element(ans.begin(),ans.end());
for(auto&c:ans)c-=mn;
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |