Submission #1202996

#TimeUsernameProblemLanguageResultExecution timeMemory
1202996nouka28Permutation (APIO22_perm)C++20
99.33 / 100
1 ms328 KiB
#include "perm.h"

#include<bits/stdc++.h>
using namespace std;

#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")

// #define int long long

#define rep(i,n) for(int i=0;i<(n);i++)
#define rng(i,l,r) for(int i=(l);i<(r);i++)
#define rrep(i,n) for(int i=(n)-1;i>=0;i--)
#define rrng(i,l,r) for(int i=(r)-1;i>=(l);i--)

#define fi first
#define se second
#define all(x) (x).begin(),(x).end()

struct fast_io{fast_io(){std::cin.tie(nullptr)->sync_with_stdio(false);}}_;

using ll=long long;

std::vector<int> construct_permutation(long long k)
{
	k--;
	
	auto dfs=[&](auto dfs,ll t)->vector<int> {
		if(t==0)return {};

		if(t%2){
			vector<int> p=dfs(dfs,t/2);
			for(auto&&e:p)e++;
			p.insert(p.begin(),0);
			return p;
		}else{
			if((t-2)%3==0){
				vector<int> p=dfs(dfs,(t-2)/3);
				for(auto&&e:p)e+=2;
				p.insert(p.begin(),0);
				p.insert(p.begin(),1);
				return p;
			}else if(t>=5&&(t-5)%6==0){
				vector<int> p=dfs(dfs,(t-5)/6);
				for(auto&&e:p)e+=3;
				p.insert(p.begin(),1);
				p.insert(p.begin(),2);
				p.insert(p.begin(),0);
				return p;
			}else if(t>=4&&(t-4)%5==0){
				vector<int> p=dfs(dfs,(t-4)/5);
				for(auto&&e:p)e+=3;
				p.insert(p.begin(),1);
				p.insert(p.begin(),0);
				p.insert(p.begin(),2);
				return p;
			}else{
				vector<int> p=dfs(dfs,t-1);
				p.insert(p.begin(),p.size());
				return p;
			}
		}
	};

	vector<int> ans=dfs(dfs,k);

	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...