#include <bits/stdc++.h>
using namespace std;
#include "messy.h"
vector<int> restore_permutation(int n,int w,int r){
int m = 0; while((1<<m)!=n) ++m;
string s(n,'1'); for (int i(0);i < 3;++i) s[i] = '0',add_element(s);
s = string(n,'0');
for (int i(0);i < n;++i) for (int k(0);k < 7;++k) if ((i>>k)&1){
for (int j(0);j < 3;++j) s[j] = '0'+((k>>j)&1);
s[i] = '1',add_element(s),s[i] = '0';
for (int j(0);j < 3;++j) s[k] = '0';
}
compile_set();
vector<int> R(n,-1),T;
if (m!=7){
string s(n,'1');
for (int i(0);i < n;++i){
s[i] = '0';
if (check_element(s)){ R[i] = 0,T.emplace_back(i); break; }
else s[i] = '1';
}
for (int i(0);i < n;++i) if (R[i]==-1){
s[i] = '0';
if (check_element(s)){ R[i] = 1,T.emplace_back(i); break; }
else s[i] = '1';
}
for (int i(0);i < n;++i) if (R[i]==-1){
s[i] = '0';
if (check_element(s)){ R[i] = 2,T.emplace_back(i); break; }
else s[i] = '1';
}
for (int i(0);i < n;++i) if (R[i]==-1) R[i] = 0;
for (int i(0);i < n;++i) if (R[i]==0&&i!=T[0]) for (int k(0);k < 7;++k){
string s(n,'0'); for (int j(0);j < 3;++j) if ((k>>j)&1) s[T[j]] = '1';
s[i] = '1',R[i] |= (1<<k)*check_element(s),s[i] = '0';
for (int j(0);j < 3;++j) s[T[j]] = '0';
}
} else {
vector<int> T;
string t(n,'1'),s(n,'0');
vector<vector<int>> segtree(2*n); segtree[1].resize(n);
iota(segtree[1].begin(),segtree[1].end(),0);
for (int l(1),r(2),k(0);l < n;l<<=1,r<<=1,++k){
if ((1<<(int)T.size())==k) for (int i(0);i < n;++i) if (t[i]=='1'){
t[i] = '0';
if (check_element(t)){ R[i] = T.size(),T.emplace_back(i); break; }
t[i] = '1';
}
for (int i(0);i < 3;++i) if ((k>>i)&1) s[T[i]] = '1';
for (int j(l);j < r;++j) for (int i:segtree[j]) if (t[i]=='1'){
if (segtree[j<<1].size()+segtree[j<<1|1].size()+1==segtree[j].size()&&segtree[j].size()==(1<<m-k)){
if (segtree[j<<1].size()<segtree[j<<1|1].size()) segtree[j<<1].emplace_back(i);
else segtree[j<<1|1].emplace_back(i);
} else {
s[i] = '1';
if (check_element(s)) segtree[j<<1|1].emplace_back(i);
else segtree[j<<1].emplace_back(i);
s[i] = '0';
}
}
for (int i:T) s[i] = '0';
}
for (int i(3);i < n;++i) R[i] = segtree[n+i][0];
}
return R;
}
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... |