#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 |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
1 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
1 ms |
604 KB |
Output is correct |
6 |
Correct |
1 ms |
604 KB |
Output is correct |
7 |
Correct |
2 ms |
348 KB |
Output is correct |
8 |
Correct |
2 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
344 KB |
Output is correct |
10 |
Correct |
2 ms |
348 KB |
Output is correct |
11 |
Correct |
1 ms |
440 KB |
Output is correct |
12 |
Correct |
1 ms |
348 KB |
Output is correct |
13 |
Correct |
1 ms |
348 KB |
Output is correct |