Submission #1213493

#TimeUsernameProblemLanguageResultExecution timeMemory
1213493TobPermutation (APIO22_perm)C++20
100 / 100
1 ms328 KiB
#include <bits/stdc++.h>
#include "perm.h"

#define F first
#define S second
#define all(x) x.begin(), x.end()
#define pb push_back
#define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)

using namespace std;

typedef long long ll;
typedef pair <ll, ll> pii;

vector <int> construct_permutation(ll k) {
	vector <int> v;
	for (int i = 58, j = 0, jj = 0; i >= 0; i -= 2) {
		int x = (k >> i) & 3;
		if (!j) {
			if (!x) continue;
			j = 1;
			if (x == 2) v.pb(0);
			else if (x == 3) v.pb(1), v.pb(0), jj = 1;
		}
		else {
			int mx = -1;
			for (int y : v) mx = max(mx, y);
			if (!x) v.pb(mx+1), v.pb(mx+2);
			else if (x == 1) {
				v.pb(mx+1);
				v.pb(mx+2);
				for (int& y : v) y++;
				v.pb(0);
			}
			else if (x == 2) {
				v.pb(mx+1);
				for (int& y : v) y++;
				v.pb(0);
				v.pb(mx+3);
			}
			else if (!jj) {
				jj = 1;
				for (int& y : v) y += 2;
				v.pb(mx+3);
				v.pb(1);
				v.pb(mx+4);
				v.pb(0);
			}
			else {
				for (int& y : v) if (y >= 2) y++;
				v.pb(mx+2);
				v.pb(mx+3);
				v.pb(2);
			}
		}
	}
	return v;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...