#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector <int> construct_permutation (ll k) {
if (k == 1) {
return {};
}
if (k == 2) {
return {0};
}
if (k == 3) {
return {1, 0};
}
auto g = construct_permutation(k / 4);
if (k % 4 == 0) {
g.push_back(int(g.size()));
g.push_back(int(g.size()));
return g;
}
if (k % 4 == 1) {
g.push_back(int(g.size()));
g.push_back(int(g.size()));
g.push_back(-1);
for (auto &i : g) i++;
return g;
}
if (k % 4 == 2) {
g.push_back(int(g.size()));
g.push_back(-1);
g.push_back(int(g.size()) - 1);
for (auto &i : g) i++;
return g;
}
int pos0 = -1, pos1 = -1;
for (int i = 0; i < int(g.size()); i++) {
if (g[i] == 1) {
pos1 = i;
}
if (g[i] == 0) {
pos0 = i;
}
}
if (pos1 != -1 && pos0 != -1 && pos1 < pos0) {
g.push_back(int(g.size()));
g.push_back(int(g.size()));
for (auto &i : g) {
if (i >= 2) i++;
}
g.push_back(2);
return g;
}
g.push_back(int(g.size()));
g.push_back(-1);
g.push_back(int(g.size()) - 1);
g.push_back(-2);
for (auto &i : g) i += 2;
return g;
}
void print (int n) {
auto g = construct_permutation(n);
for (auto k : g) cout << k << " ";
cout << '\n';
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
1 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
644 KB |
Output is correct |
5 |
Correct |
1 ms |
344 KB |
Output is correct |
6 |
Correct |
1 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
348 KB |
Output is correct |
10 |
Correct |
1 ms |
348 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
1 ms |
348 KB |
Output is correct |
13 |
Correct |
2 ms |
500 KB |
Output is correct |