# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
776050 | phoenix | Mechanical Doll (IOI18_doll) | C++17 | 113 ms | 19320 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.
#include<bits/stdc++.h>
#include "doll.h"
using namespace std;
vector<int> A, C, X, Y;
int S = 0;
int create_switch() {
X.push_back(-1);
Y.push_back(-1);
S++;
return -S;
}
void build(int trigger, vector<int> in) {
if((int)in.empty()) {
C[trigger] = 0;
return;
}
if((int)in.size() == 1) {
C[trigger] = A[in[0] + 1];
return;
}
int k = 1;
vector<int> order = {0};
while(k < (int)in.size()) {
if(k == 1) C[trigger] = create_switch();
else {
int len = S;
for(int i = len - k / 2; i < len; i++) {
X[i] = create_switch();
Y[i] = create_switch();
}
}
vector<int> new_ord;
for(int i = 0; i < k; i++)
new_ord.push_back(order[i]),
new_ord.push_back(order[i] + k);
order = new_ord;
k *= 2;
}
for(int i = S - k / 2; i < S; i++) {
int y = i - S + k / 2;
X[i] = (order[y * 2] < k - (int)in.size() ? C[trigger] : A[in[ order[2 * y] - k + (int)in.size() ] + 1]);
Y[i] = (order[y * 2 + 1] < k - (int)in.size() ? C[trigger] : A[in[ order[2 * y + 1] - k + (int)in.size() ] + 1]);
}
}
const int N = 1e5 + 10;
vector<int> g[N];
void create_circuit(int M, std::vector<int> a) {
C.resize(M + 1);
a.push_back(0);
A = a;
for(int i = 0; i < (int)A.size(); i++) {
g[A[i]].push_back(i);
}
C[0] = A[0];
for(int i = 1; i <= M; i++) {
build(i, g[i]);
}
if(S > 2 * (int)a.size()) {
1 / 0;
return;
}
answer(C, X, Y);
}
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... |