#include "messy.h"
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define pb push_back
// #define int long long
#define fi first
#define se second
const int N = 3e5 + 5, M = 1e9 + 7, LG = 20;
int n , A[N] , w , r;
vector<int> P;
void add(int se , int e , string s){
if (se + 1 == e){
return;
}
for (int i=0 ; i<n ; i++){
if (se <= i && i < e){
s[i] = '0';
}else{
s[i] = '1';
}
}
int mid = (e-se)/2;
for (int i=0 ; i<n ; i++){
if (!mid) break;
if (s[i] == '0'){
s[i] = '1';
add_element(s);
s[i] = '0';
mid--;
}
}
mid = (se+e)/2;
add(se , mid , s);
add(mid , e , s);
}
void get(int se , int e , string s){
if (se + 1 == e){
for (int i=0 ; i<n ; i++){
if (s[i] == '0'){
P[i] = se;
return;
}
}
}
int mid = (e-se)/2;
vector<int> lc , rc;
for (int i=0 ; i<n ; i++){
if (s[i] == '0'){
s[i] = '1';
bool x = check_element(s);
if (x){
lc.pb(i);
}else{
rc.pb(i);
}
s[i] = '0';
}
}
mid = (se+e)/2;
for (int i : rc){
s[i] = '1';
}
get(se , mid , s);
for (int i : rc){
s[i] = '0';
}
for (int i : lc){
s[i] = '1';
}
get(mid , e , s);
}
vector<int> restore_permutation(int N, int w, int r) {
n = N;
P.resize(n , 0);
string s = "" , t = "";
for (int i=0 ; i<n ; i++){
s += '0';
t += '0';
}
add(0 , n , s);
compile_set();
get(0 , n , t);
return P;
}
// signed main(){
// cin >> n >> w >> r;
// restore_permutation(n,w,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... |