제출 #1186301

#제출 시각아이디문제언어결과실행 시간메모리
1186301hamzabc자동 인형 (IOI18_doll)C++20
100 / 100
59 ms13596 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() #define sp << " " << vector<int> goes; vector<int> X, Y; vector<array<int, 3>> dvm; void wire(int ret = -1, int retto = 0, int repeattime = 1, int layer = 0, int number = 0){ bool finalise = false; if (ret == -1){ finalise = true; int fark = goes.size(); int loog = __lg(fark); if (fark == (1 << loog)){ repeattime = (1 << loog); ret = 0; }else{ repeattime = (1 << loog) * 2; retto = -X.size(); ret = repeattime - fark; } } int swc = X.size() - 1; bool backed = false; if (ret >= repeattime / 2){ backed = true; ret -= repeattime / 2; X[swc] = retto; }else{ if (repeattime == 2){ // X[swc] = goes[num][number - min(standart, (number + 1) / 2)]; dvm.push_back({ number, swc, 1 }); }else{ X[swc] = -X.size() - 1; X.push_back(0); Y.push_back(0); wire(ret, retto, repeattime / 2, layer + 1, number); } } if (repeattime == 2){ number += (1 << layer); dvm.push_back({ number, swc, 0 }); // Y[swc] = goes[num][number - min(standart, (number + 1) / 2)]; }else{ Y[swc] = -X.size() - 1; X.push_back(0); Y.push_back(0); if (backed){ wire(ret, retto, repeattime / 2, layer + 1, number + (1 << layer)); }else{ wire(0, 0, repeattime / 2, layer + 1, number + (1 << layer)); } } if (finalise){ sort(all(dvm)); int j = 0; for (auto i : dvm){ if (i[2]){ X[i[1]] = goes[j]; }else{ Y[i[1]] = goes[j]; } j++; } dvm.clear(); } } void create_circuit(int M, vector<int> A) { A.push_back(0); goes = A; vector<int> Ret(M + 1); X.push_back(0); Y.push_back(0); for (int i = 0; i < M + 1; i++){ Ret[i] = -1; } wire(); answer(Ret, X, Y); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...