Submission #847064

#TimeUsernameProblemLanguageResultExecution timeMemory
847064siewjhVision Program (IOI19_vision)C++17
100 / 100
23 ms2936 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; int rows, cols, dlen, dist; bool valid(int r, int c){ return r >= 0 && c >= 0 && r < rows && c < cols; } int coord(int r, int c){ return r * cols + c; } pair<int, int> solve(bool dir){ vector<int> diag; if (dir){ for (int i = 0; i < rows; i++){ vector<int> test; int r = i, c = 0; for (; valid(r, c); r--, c++) test.push_back(coord(r, c)); diag.push_back(add_or(test)); } for (int i = 1; i < cols; i++){ vector<int> test; int r = rows - 1, c = i; for (; valid(r, c); r--, c++) test.push_back(coord(r, c)); diag.push_back(add_or(test)); } } else{ for (int i = 0; i < rows; i++){ vector<int> test; int r = i, c = cols - 1; for (; valid(r, c); r--, c--) test.push_back(coord(r, c)); diag.push_back(add_or(test)); } for (int i = cols - 2; i >= 0; i--){ vector<int> test; int r = rows - 1, c = i; for (; valid(r, c); r--, c--) test.push_back(coord(r, c)); diag.push_back(add_or(test)); } } int same = add_xor(diag), k, lk; vector<int> vk, vlk; for (int i = dlen - 1; i >= dist; i--) vk.push_back(add_and({diag[i - dist], diag[i]})); k = add_or(vk); for (int i = dlen - 1; i >= dist; i--){ vector<int> test; for (int j = 0; j <= dist; j++) test.push_back(diag[i - j]); int present = add_or(test), one = add_xor(test); vlk.push_back(add_and({present, add_not(one)})); } vlk.push_back(same); lk = add_or(vlk); return {k, lk}; } void construct_network(int H, int W, int K) { rows = H, cols = W, dlen = H + W - 1, dist = K; auto lp = solve(1), rp = solve(0); int a1 = add_and({lp.first, rp.second}), a2 = add_and({lp.second, rp.first}); add_or({a1, a2}); }
#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...