#include <bits/stdc++.h>
#pragma GCC target("lzcnt,popcnt")
#pragma GCC optimize("O3,unroll-loops")
//#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
#define sp << " " <<
using namespace std;
#include "messy.h"
int nn;
vi ans;
void dnq(int l,int r) {
if (l == r) return;
int m = (l+r) >> 1;
string str(nn,'0');
for (int i = 0;i<nn;i++) {
if (i > r || i < l) str[i] = '1';
}
for (int i = l;i<=m;i++) {
str[i] = '1';
add_element(str);
str[i] = '0';
}
dnq(l,m),dnq(m+1,r);
}
void solve(vi v,int l,int r) {
if (l == r) {
assert(!v.empty());
ans[v.back()] = l;
return;
}
string str(nn,'1');
for (auto it : v) str[it] = '0';
vi nxt,nxtt;
int m = (l+r) >> 1;
for (auto it : v) {
str[it] = '1';
if (check_element(str)) nxt.push_back(it);
else nxtt.push_back(it);
str[it] = '0';
}
solve(nxt,l,m),solve(nxtt,m+1,r);
}
std::vector<int> restore_permutation(int n, int w, int r) {
nn = n;
ans.resize(n);
vi bts(n);
iota(all(bts),0ll);
dnq(0,n-1);
compile_set();
solve(bts,0,n-1);
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... |