Submission #1041651

#TimeUsernameProblemLanguageResultExecution timeMemory
1041651yanbMechanical Doll (IOI18_doll)C++14
53 / 100
64 ms13368 KiB
#include <bits/stdc++.h> using namespace std; //#define int long long //#define pii pair<long long, long long> void answer(vector<signed> C, vector<signed> X, vector<signed> Y); void create_circuit(int k, vector<int> a) { int n = a.size(); a.push_back(0); vector<vector<int>> g(k + 1); g[0].push_back(a[0]); for (int i = 0; i < n; i++) { g[a[i]].push_back(a[i + 1]); } vector<int> C(k + 1), X, Y; C[0] = g[0][0]; for (int j = 1; j < k + 1; j++) { int cnt = g[j].size(); int z = 1, ord = 0; while (z < cnt) { z *= 2; ord++; } if (ord == 0) { if (cnt == 1) C[j] = g[j][0]; continue; } vector<int> p(z); p[0] = 0; for (int i = 0; i < ord; i++) { for (int ni = 0; ni < (1 << i); ni++) { p[(1 << i) + ni] = p[ni] + (1 << (ord - i - 1)); } } int wnots = X.size(); C[j] = -wnots - 1; vector<int> v(z, -wnots - 1); for (int i = z - (int) g[j].size(); i < z; i++) { v[i] = g[j][i - z + (int) g[j].size()]; } vector<int> vp(z); for (int i = 0; i < z; i++) { vp[p[i]] = v[i]; } vector<int> X_(z), Y_(z); for (int ni = 1; ni < z / 2; ni++) { X_[ni] = -ni * 2 - wnots; Y_[ni] = -ni * 2 - 1 - wnots; } for (int ni = 0; ni < z / 2; ni++) { X_[ni + z / 2] = vp[ni * 2]; Y_[ni + z / 2] = vp[ni * 2 + 1]; } for (int i = 1; i < z; i++) { X.push_back(X_[i]); Y.push_back(Y_[i]); } } answer(C, X, Y); } #ifdef ONLINE_JUDGE void answer(vector<signed> C, vector<signed> X, vector<signed> Y) { for (int x : C) cout << x << " "; cout << "\n"; for (int x : X) cout << x << " "; cout << "\n"; for (int x : Y) cout << x << " "; cout << "\n"; } int main() { create_circuit(4, {1, 1, 1, 1, 1, 1}); } #endif
#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...