Submission #1050353

#TimeUsernameProblemLanguageResultExecution timeMemory
1050353HalitVision Program (IOI19_vision)C++17
58 / 100
9 ms2652 KiB
#include "vision.h" #include <bits/stdc++.h> void construct_network(int H, int W, int K) { if (H == 1 || W == 1) { std::vector<int> idx; for (int i = 0;i + K < H*W; ++i) { idx.push_back(add_and({i, i+K})); } add_or(idx); return; } if (H * W <= 900) { std::vector<int> imp; for (int i = 0;i < H*W; ++i) { std::vector<int> idx; for (int j = i+1;j < H*W; ++j) { int x1 = i / W; int y1 = i % W; int x2 = j / W; int y2 = j % W; if (std::abs(x1 - x2) + std::abs(y1 - y2) == K) { idx.push_back(j); } } if (idx.size()) { imp.push_back(add_and(std::vector<int>{i, (add_or(idx))})); } } add_or(imp); return; } if (K == 1) { std::vector<std::vector<int>> a(H+W), b(H+W); for (int i = 0;i < H; ++i) { for (int j = 0;j < W; ++j) { a[i + j].push_back(i * W + j); b[H - i + j - 1].push_back(i * W + j); } } std::vector<int> idx1, idx2; for (int i = 0;i+1 < H+W-1; ++i) { std::vector<int> cur1, cur2; cur1.push_back(add_or(a[i])); cur1.push_back(add_or(a[i+1])); cur2.push_back(add_or(b[i])); cur2.push_back(add_or(b[i+1])); idx1.push_back(add_and(cur1)); idx2.push_back(add_and(cur2)); } std::vector<int> imp; imp.push_back(add_or(idx1)); imp.push_back(add_or(idx2)); add_and(imp); return; } }
#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...