Submission #1360238

#TimeUsernameProblemLanguageResultExecution timeMemory
1360238itaykarny순열 (APIO22_perm)C++20
10 / 100
2 ms580 KiB
#include "perm.h"
#include<set>
#include<map>
#include<string>
#include<math.h>
#include<queue>
#include<stack>
#include<iomanip>

using namespace std;
using ll = long long;
using vll = vector<ll>;
using vvll = vector<vll>;
using pll = pair<ll, ll>;
using vpll = vector<pll>;
using vvpll = vector<vpll>;

vll to_binary(ll k) {
	vll ind;
	for (ll i = 30; i >= 0; i--) {
		if (k & (1LL << i)) {
			ind.push_back(i);
		}
	}
	return ind;
}


std::vector<int> construct_permutation(long long k)
{
	ll n = 0;
	k--;
	vll sol = to_binary(k);
	ll s = sol.size();
	for (ll j = 0; j < s; j++) {
		ll i = sol[j];
		n += i;
		n++;
		sol.push_back(1);
	}
	ll cur = n - 1;
	ll pos = 0;
	vector<int> ans(n);
	for (auto i : sol) {
		ll now = cur - i + 1;
		for (ll j = 0; j < i; j++) {
			ans[pos + j] = now;
			now++;
		}
		cur = cur - i;
		pos += i;
	}
	return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...