Submission #1226711

#TimeUsernameProblemLanguageResultExecution timeMemory
1226711abdelhakimPermutation (APIO22_perm)C++20
91.33 / 100
1 ms328 KiB
#include "perm.h"
#include<bits/stdc++.h>
#define ll long long
using namespace std;
std::vector<int> construct_permutation(long long k)
{
	vector<ll> l3ibat;
	vector<bool> kayn(61);
	for (int i=0;i<=60;i++)
	{
		ll num=1LL<<i;
		if(num & k)
		{
			l3ibat.push_back(i);
			kayn[i]=1;
		}
	}
	ll n=l3ibat.back();
	vector<ll> p1(n);
	iota(p1.begin(),p1.end(),1);
	ll cur=0;
	for (int i=1;i<n;i++)
	{
		if(kayn[n-i])
		{
			cur++;
		}
		p1[i]+=cur;
	}
	vector<int> nzido;
	if(k%2) nzido.push_back(p1.back()+1);
	for (int i=n-1;i>=1;i--)
	{
		if(p1[i]-p1[i-1]==2)
		{
			nzido.push_back(p1[i]-1);
		}
	}
	for (int i=0;i<n;i++)
	{
		nzido.push_back(p1[i]);
	}
	for (auto &&e : nzido)
	{
		e--;
	}
	
	return nzido;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...