Submission #913808

# Submission time Handle Problem Language Result Execution time Memory
913808 2024-01-20T09:44:46 Z AbdelmagedNour Permutation (APIO22_perm) C++17
100 / 100
2 ms 604 KB
#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