#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 12;
vector<int> g[maxn];
vector<int> x, y;
int n, m;
int nv;
vector<int> find(vector<int> v) {
if((int)v.size() <= 1) return v;
vector<int> res, a, b;
for(int i = 0; i < v.size(); i += 2) {
a.push_back(v[i]);
}
for(int i = 1; i < v.size(); i += 2) {
b.push_back(v[i]);
}
a = find(a), b = find(b);
for(int x : a) {
res.push_back(x);
}
for(int x : b) {
res.push_back(x);
}
return res;
}
int upd(vector<int> v, int st) {
bool fg = 1;
for(int x : v) {
if(x >= 0) {
fg = 0;
}
}
if(fg) return st;
if((int)v.size() == 1) {
return v[0];
}
vector<int> a, b;
int sz = (int)v.size() / 2;
for(int i = 0; i < sz; i++) {
a.push_back(v[i]);
}
for(int i = sz; i < 2 * sz; i++) {
b.push_back(v[i]);
}
int u = (int)x.size();
if(st >= 0) st = -(u + 1);
x.push_back(0), y.push_back(0);
int L = upd(a, st), R = upd(b, st);
x[u] = L, y[u] = R;
return -(u + 1);
}
void create_circuit(int M, std::vector<int> a) {
n = (int)a.size();
m = M;
vector<int> c(m + 1);
c[0] = a[0];
for(int i = 0; i < n - 1; i++) {
g[a[i]].push_back(a[i + 1]);
}
g[a[n - 1]].push_back(0);
for(int i = 1; i <= m; i++) {
if((int)g[i].size() == 0) {
continue;
}
if((int)g[i].size() == 1) {
c[i] = g[i][0];
continue;
}
int t = 1;
while(t < (int)g[i].size()) {
t <<= 1;
}
int sz = t - (int)g[i].size();
vector<int> pos, vt;
for(int j = 0; j < t; j++) {
pos.push_back(j);
vt.push_back(0);
}
pos = find(pos);
int ptr = 0;
for(int j = 0; j < sz; j++) {
vt[j] = -1;
}
for(int j = 0; j < t; j++) {
if(vt[pos[j]] < 0) continue;
vt[pos[j]] = g[i][ptr];
ptr++;
}
c[i] = upd(vt, 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... |