#include <bits/stdc++.h>
#include "doll.h"
using namespace std;
vector<int> ord(int n){
if (n == 1) return {1};
vector<int> a = ord(n / 2), ans;
for (auto i : a){
ans.push_back(i);
ans.push_back(i + n / 2);
}
return ans;
}
void create_circuit(int M, vector<int> A) {
// A.push_back(0);
int N = A.size()+1;
int p = 1;
while (p < N) p *= 2;
vector<int> O = ord(p);
vector<int> C(M + 1, -1), X(2 * p - 1), Y(2 * p - 1);
deque<int> leaves = {-1};
while (leaves.size() && -2 * leaves.front() <= 2 * p - 1){
int x = -leaves.front();
leaves.pop_front();
X[x - 1] = -(2 * x);
Y[x - 1] = -(2 * x + 1);
leaves.push_back(-(2 * x));
leaves.push_back(-(2 * x + 1));
}
for(auto &i:O){
i += p-1;
// cout<<i<<' ';
}
for (int i = 0; i < p; i++){
X[O[i]-1]=-O[i];
if(i<N-1) Y[O[i]-1]=A[i];
else Y[O[i]-1]=-1;
}
X[2*p-2]=-(2*p-1);
Y[2*p-2]=0;
// for(int i=0;i<2*p-1;i++){
// cout<<-i-1<<' '<<X[i]<<' '<<Y[i]<<endl;
// }
answer(C,X,Y);
}
// int main(){
// create_circuit(4, {1, 2, 1, 3});
// }
| # | 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... |