#include "messy.h"
#include <bits/stdc++.h>
using namespace std;
int n, a[128], b[128], c[128];
void dc1(int l1, int r1, int l2, int r2, int k) {
string s(n, '0');
int mid = (l1 + r1) / 2;
for (int i = l2; i < r2; i++) s[i] = '1';
for (int i = l1; i < mid; i++) {
s[i] = '1';
add_element(s);
a[i] |= (1<<k);
s[i] = '0';
}
if (l1 != mid && mid != r1) {
dc1(l1, mid, mid, r1, k+1);
dc1(mid, r1, l1, mid, k+1);
}
}
void dc2(vector<int> v1, vector<int> v2, int k) {
string s(n, '0');
vector<int> v3, v4;
for (auto i: v2) s[i] = '1';
for (auto i: v1) {
s[i] = '1';
if (check_element(s)) v3.push_back(i), b[i] |= (1<<k);
else v4.push_back(i);
s[i] = '0';
}
if (v3.size() > 1 && v4.size() > 1) {
dc2(v3, v4, k+1);
dc2(v4, v3, k+1);
}
}
vector<int> restore_permutation(int n, int w, int r) {
::n = n;
dc1(0, n, n, n, 0);
compile_set();
vector<int> temp(n), ans(n);
iota(temp.begin(), temp.end(), 0);
dc2(temp, vector<int>(), 0);
for (int i = 0; i < n; i++) c[a[i]] = i;
for (int i = 0; i < n; i++) ans[i] = c[b[i]];
return ans;
}
Compilation message (stderr)
messy.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
messy_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |