#include "messy.h"
#include <bits/stdc++.h>
#include <cstdlib>
#define pii pair<int, int>
#define rep(a,b,c) for(int a=b; a<c; a++)
#define repr(a,b,c) for(int a=b-1; a>c-1; a--)
#define repa(a,b) for(auto a:b)
#define fi first
#define se second
#define all(a) a.begin(), a.end()
#define mid ((l+r)>>1)
#define pb push_back
using namespace std;
using vi = vector<int>;
int N, x;
vi p;
string s;
void add_tree(int l, int r){
if(l==r) return;
rep(i,l,r+1) s[i]='0';
rep(i,l,mid+1){
s[i]='1';
add_element(s);
s[i]='0';
}
rep(i,l,r+1) s[i]='1';
add_tree(l,mid);
add_tree(mid+1,r);
}
void init(){
s.resize(N);
rep(i,0,N) s[i]='1';
s[N-1]='0';
add_element(s);
add_tree(0,N-2);
compile_set();
}
int find_n(){
rep(i,0,N) s[i]='1';
rep(e,0,N){
s[e]='0';
if(check_element(s)) return e;
s[e]='1';
}
}
void solve(int l, int r){
if(l==r) return;
rep(i,l,r+1) s[p[i]]='0';
vi vl, vr;
rep(i,l,r+1){
s[p[i]]='1';
if(check_element(s)) vl.pb(p[i]);
else vr.pb(p[i]);
s[p[i]]='0';
}
rep(i,l,r+1) s[p[i]]='1';
int ind=l;
repa(e,vl) p[ind++]=e;
repa(e,vr) p[ind++]=e;
solve(l,l+vl.size()-1);
solve(l+vl.size(),r);
}
vector<int> restore_permutation(int n, int w, int r) {
vi ans(n);
N=n;
init();
x = find_n();
p.clear();
rep(i,0,n) if(i!=x) p.pb(i);
solve(0,n-2);
ans[x]=n-1;
rep(i,0,n-1) ans[p[i]]=i;
return ans;
}
Compilation message (stderr)
messy.cpp: In function 'int find_n()':
messy.cpp:51:1: warning: control reaches end of non-void function [-Wreturn-type]
51 | }
| ^
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... |