Submission #1221978

#TimeUsernameProblemLanguageResultExecution timeMemory
1221978madamadam3자동 인형 (IOI18_doll)C++20
6 / 100
39 ms8260 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; #define FOR(i, a, b) for (int i = a; i < b; i++) #define all(x) (x).begin(), (x).end() #define sz(x) (x).size() typedef long long ll; using vi = vector<int>; void simulate(int m, vi &C, vi &X, vi &Y) { int cur = 0, done = 0; vi state(X.size(), 0); while (true) { cout << cur << " "; if (cur == 0 && done > 0) break; if (cur >= 0) { cur = C[cur]; } else { state[(-cur) - 1] = 1 - state[(-cur) - 1]; if (state[(-cur) - 1] == 1) { cur = X[(-cur) - 1]; } else { cur = Y[(-cur) - 1]; } } done++; } cout << "\n"; } void create_circuit(int m, vi A) { int n = sz(A); vi C(m + 1, 0); vi X(n), Y(n); C[0] = A[0]; vi cnt(m+1, 0); FOR(i, 0, n) cnt[A[i]]++; int cs = -1; FOR(i, 0, n) { int cv = (-cs) -1; if (C[A[i]] == 0) { X[cv] = C[A[i]] = cs; Y[cv] = i == n-1 ? 0 : A[i+1]; } else { int prev = (-C[A[i]]) - 1; X[prev] = Y[prev]; Y[prev] = X[cv] = cs; Y[cv] = i == n - 1 ? 0 : A[i+1]; } cs--; } // simulate(m, C, X, Y); answer(C, 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...