Submission #738812

#TimeUsernameProblemLanguageResultExecution timeMemory
738812NeroZeinVision Program (IOI19_vision)C++17
100 / 100
22 ms2732 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; int test (int n, int m, int k) { vector<vector<int>> R(n + m - 1), L(n + m - 1); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { L[i + j].push_back(i * m + j); R[i - j + m - 1].push_back(i * m + j); } } vector<int> HaveR(n + m - 1), PrefHaveR(n + m - 1); vector<int> HaveL(n + m - 1), PrefHaveL(n + m - 1); vector<int> ask; for (int i = 0; i < n + m - 1; ++i) { HaveR[i] = add_or(R[i]); HaveL[i] = add_or(L[i]); PrefHaveR[i] = i ? add_or({PrefHaveR[i - 1], HaveR[i]}) : HaveR[i]; PrefHaveL[i] = i ? add_or({PrefHaveL[i - 1], HaveL[i]}) : HaveL[i]; if (i >= k) { ask.push_back(add_and({HaveR[i], PrefHaveR[i - k]})); ask.push_back(add_and({HaveL[i], PrefHaveL[i - k]})); } } return (ask.empty() ? add_and({0, add_not(0)}) : add_or(ask)); } void construct_network(int H, int W, int K) { add_xor({test(H, W, K), test(H, W, 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...