이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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... |