제출 #1356389

#제출 시각아이디문제언어결과실행 시간메모리
1356389nathlol2순열 (APIO22_perm)C++20
10 / 100
0 ms344 KiB
#include "perm.h"
#include <bits/stdc++.h>
#define ll long long
using namespace std;

vector<int> construct_permutation(ll k){
	vector<int> t;
	ll c = 1;
	int cc = 0;
	while(c * 2 <= k){
		t.push_back(cc++);
		c *= 2;
	}
	k -= c;
	int tmp = cc;
	vector<int> ans = t;
	for(ll b = 60;b>=0;b--){
		if(cc >= 90) continue;
		if(k & (1LL << b)){
			t.push_back(t[b]);
			ans.push_back(t[b]);
			for(int i = b;i<cc;i++) t[i]++, ans[i]++;
			++cc;
			k -= (1LL << b);
		}
	}
	vector<int> d;
	for(int i = tmp;i<cc;i++) d.push_back(t[i]);
	sort(d.begin(), d.end());
	int ptr = 0;
	vector<int> vv(d.size());
	for(ll b = 0;b<(ll)d.size();b++){
		if(!(k & (1LL << b))){
			vv[b] = d[ptr++];
		}
	}
	for(ll b = (ll)(d.size() - 1);b>=0;b--){
		if(k & (1LL << b)){
			vv[b] = d[ptr++];
		}
	}
	for(int i = 0;i<d.size();i++) ans.pop_back();
	for(int i = (int)vv.size() - 1;i>=0;i--) ans.push_back(vv[i]);
	return ans;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…