#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
int rev(int x)
{
int ans = 0;
while (x)
{
ans *= 2;
ans += x % 2;
x /= 2;
}
return ans;
}
void create_circuit(int M, vector<int> A)
{
int N = A.size();
vector<vector<int>> exits(M + 1);
exits[0].push_back(A[0]);
for (int i = 0; i < N - 1; i++)
exits[A[i]].push_back(A[i + 1]);
exits[A.back()].push_back(0);
vector<int> X, Y, C(M + 1);
for (int i = 0; i <= M; i++)
{
int x = exits[i].size();
if (x == 0)
{
C[i] = 0;
continue;
}
C[i] = exits[i][0];
if (x == 1)
continue;
C[i] = -X.size() - 1;
for (int j = 0; j < x - 1; j++)
{
int pos = j - pow(2, floor(log2(j + 1)) - 1) + 1;
int a = rev(pos), b = rev(2 * pos + 1), a2 = rev(4 * pos + 1), b2 = rev(4 * pos + 3);
if (a2 <= x)
{
X[j] = -X.size() - 1;
X.push_back(M + 1);
Y.push_back(M + 1);
}
else
X[j] = exits[i][a - 1];
if (b2 <= x)
{
Y[j] = -X.size() - 1;
X.push_back(M + 1);
Y.push_back(M + 1);
}
else
Y[j] = exits[i][b - 1];
}
}
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... |