Submission #434196

#TimeUsernameProblemLanguageResultExecution timeMemory
434196emil_physmathVision Program (IOI19_vision)C++17
52 / 100
6 ms588 KiB
#include "vision.h" #include <vector> using namespace std; const int maxN = 200; void construct_network(int n, int m, int k) { auto OK = [&](int i, int j) { return 0 <= i && i < n && 0 <= j && j < m; }; int sz = n * m; if (max(n, m) <= 30 || min(n, m) == 1) { vector<int> ands; for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) { vector<int> neis; for (int di = -k; di <= k; ++di) { int dj = k - abs(di); int x = i + di, y = j + dj; if (OK(x, y)) neis.push_back(x * m + y); if (OK(x, y) && !dj) continue; x = i + di, y = j - dj; if (OK(x, y)) neis.push_back(x * m + y); } if (neis.size()) { add_or(neis); add_and(vector<int>{sz++, i * m + j}); ands.push_back(sz++); } } add_or(ands); return; } vector<int> neis; for (int i = 0; i <= k; ++i) { int j = k - i; if (!OK(i, j)) continue; neis.push_back(i * m + j); } add_or(neis); add_and(vector<int>{0, sz++}); ++sz; }
#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...