This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
void create_circuit(int M, vector<int> A) {
int N = A.size();
vector<int> C(M + 1);
int sz = 1;
while(sz <= N) sz*= 2;
vector<int> state(sz+1);
vector<int> id(2*sz+2);
function<void(int,int)> addid = [&](int v, int i){
if(v >= sz){
id[v] = i;
return;
}
else id[v] = -v;
addid(2*v + state[v], i);
state[v] ^= 1;
};
for(int i=0; i<N; i++) addid(1, A[i]);
for(int i=N; i<sz-1; i++) addid(1, -1);
addid(1, 0);
//assert(accumulate(state.begin(), state.end(), 0) == 0);
vector<int> X(sz), Y(sz);
for(int &x: C) x = -1;
for(int i=1; i<=sz; i++){
X[i-1] = id[2*i];
Y[i-1] = id[2*i+1];
}
// for(int x: C) cout << x << " "; cout << endl;
// for(int x: X) cout << x << " "; cout << endl;
// for(int x: Y) cout << x << " "; cout << endl;
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... |