Submission #544653

#TimeUsernameProblemLanguageResultExecution timeMemory
544653sliviuVision Program (IOI19_vision)C++17
100 / 100
26 ms3456 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; void construct_network(int h, int w, int k) { vector<vector<int>> d_(h + w - 1), dd_(h + w - 1); vector<int> d, dd, p, pp, p_, pp_; for (int i = 0; i < h; ++i) for (int j = 0; j < w; ++j) d_[i + j].emplace_back(i * w + j), dd_[i + w - 1 - j].emplace_back(i * w + j); for (int i = 0; i < h + w - 1; ++i) { d.emplace_back(add_or(d_[i])), dd.emplace_back(add_or(dd_[i])); p_.emplace_back(d.back()), pp_.emplace_back(dd.back()); p.emplace_back(add_or(p_)), pp.emplace_back(add_or(pp_)); } auto solve = [&](int k) { vector<int> ans; for (int i = 0; i + k < h + w - 1; ++i) ans.emplace_back(add_and({p[i],d[i + k]})), ans.emplace_back(add_and({pp[i],dd[i + k]})); return add_or(ans); }; if (k == h + w - 2) solve(k); else add_and({solve(k),add_not(solve(k + 1))}); }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...