Submission #1201789

#TimeUsernameProblemLanguageResultExecution timeMemory
1201789KavelmydexPermutation (APIO22_perm)C++20
71.22 / 100
7 ms1348 KiB
/*
k--;
seperate (k-1) to the sum of (2^i-1)
==========================
==========================
*/
#include "perm.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define vi vector<int>
#define pb push_back

vector<int> construct_permutation(ll k){
	k--;
	ll p=1,n=0;
	for(int i=0;i<59;++i)p*=2;
	vi h(60),ans;
	for(int i=59;i>=1;--i){
		while(k>=p-1){
			h[i]++; n+=i;
			k-=p-1;
		}
		p/=2;
	} assert(!k);
	n--;
	for(int i=1;i<=59;++i){
		for(int j=0;j<h[i];++j){
			vi toadd;
			for(int k=0;k<i;++k) toadd.pb(n--);
			reverse(begin(toadd),end(toadd));
			for(int x:toadd)ans.pb(x);
		} 
	}
	return ans;
}	
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...