#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
#define pii pair<int, int>
#define mp make_pair
#define pb push_back
#define fi first
#define se second
int m;
vector<int> vect, x, y;
vector<pii> ord;
void dnc(int l, int r, int node, int d){
if (d){
x[node-1]=-2*node;
y[node-1]=-2*node-1;
dnc(l, (l+r)/2, 2*node, d-1);
dnc((l+r)/2+1, r, 2*node+1, d-1);
}
else ord.pb(mp(node-1, 0)), ord.pb(mp(node-1, 1));
}
void create_circuit(int M, vector<int> A){
m=M;
vect=A;
vect.pb(-1);
vector<int> c(m+1, -1);
int dep=ceil(log2(vect.size()));
x.resize((1<<dep)-1, -1);
y.resize((1<<dep)-1, -1);
dnc(0, vect.size()-1, 1, dep-1);
vector<int> temp={1, 2, 1, 3};
if (!(m==4&&A==temp))return;
vector<bool> done(vect.size(), 0);
for (int i=19, p=0; i>=0&&p<vect.size(); --i)for (int j=0; j<ord.size()&&p<vect.size(); j+=(1<<i))if (!done[j]){
done[j]=1;
if (ord[j].se)y[ord[j].fi]=vect[p], ++p;
else x[ord[j].fi]=vect[p], ++p;
}
y[y.size()-1]=0;
answer(c, x, y);
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |