Submission #1210133

#TimeUsernameProblemLanguageResultExecution timeMemory
1210133onbert자동 인형 (IOI18_doll)C++17
100 / 100
62 ms12584 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; const int maxn = 4e5 + 5, maxm = 2e5 + 5; int n, m; vector<int> a; int cnt = 0; int adj[maxn][2]; bool mode[maxn]; int build(int sz, int p) { if (sz == 0) return 1; else if (sz == 1 && p == -1) return -1; int u = ++cnt; int val = (1 << p); adj[u][0] = build(max(sz - val, (int)0), p-1); adj[u][1] = build(min(val, sz), p-1); return u; } void create_circuit(int M, vector<int> A) { m = M, a = A; n = a.size(); n++; a.push_back(0); build(n, log2(n - 1)); for (int i=0;i<n;i++) { int u = 1; while (true) { int v = adj[u][mode[u]]; mode[u] = !mode[u]; if (v == -1) { adj[u][!mode[u]] = -a[i]; break; } u = v; } } vector<int> C(m+1, -1), X(cnt), Y(cnt); for (int i=1;i<=cnt;i++) X[i-1] = -adj[i][0], Y[i-1] = -adj[i][1]; 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...