# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1067945 | Ignut | Mechanical Doll (IOI18_doll) | C++17 | 55 ms | 12484 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// Ignut
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
void answer(vector<int> C, vector<int> X, vector<int> Y);
void create_circuit(int M, vector<int> A) {
int N = A.size();
vector<int> edges[M + 1];
edges[0].push_back(A[0]);
for (int i = 0; i + 1 < N; i ++)
edges[A[i]].push_back(A[i + 1]);
edges[A.back()].push_back(0);
vector<int> C(M + 1);
int nextSwitch = -1;
vector<int> X, Y;
for (int i = 0; i <= M; i ++) {
if (edges[i].empty()) {
C[i] = i; continue;
}
if (edges[i].size() == 1) {
C[i] = edges[i][0]; continue;
}
vector<int> sw;
for (int j = 0; j < edges[i].size() - 1; j ++) {
sw.push_back(nextSwitch --);
}
C[i] = sw.front();
for (int j = 0; j < sw.size(); j ++) {
X.push_back(edges[i][j]);
if (j + 1 == sw.size())
Y.push_back(edges[i][j + 1]);
else
Y.push_back(sw[j + 1]);
}
// cerr << i << " : " << sw.size() << '\n';
}
answer(C, X, Y);
return;
}
/*
4 4
1 2 1 3
*/
Compilation message (stderr)
# | 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... |