제출 #422851

#제출 시각아이디문제언어결과실행 시간메모리
422851SSRSVision Program (IOI19_vision)C++14
34 / 100
14 ms1892 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; void construct_network(int H, int W, int K){ int mx = H + W - 1; vector<vector<int>> id1(mx), id2(mx); for (int i = 0; i < H; i++){ for (int j = 0; j < W; j++){ id1[i + j].push_back(i * W + j); id2[i - j + (W - 1)].push_back(i * W + j); } } vector<int> a(mx), b(mx); for (int i = 0; i < mx; i++){ a[i] = add_or(id1[i]); b[i] = add_or(id2[i]); } vector<int> id; for (int i = 0; i < 2; i++){ vector<int> A; for (int j = 0; j < mx - K; j++){ A.push_back(add_and({a[j], a[j + K]})); } vector<int> S(mx + 1); S[1] = b[0]; for (int i = 1; i < mx; i++){ S[i + 1] = add_xor({S[i], b[i]}); } vector<int> B = {S[mx]}; for (int i = 0; i < mx; i++){ int l = i + 1; int r = min(i + K + 1, mx); int x = add_xor({S[l], S[r]}); B.push_back(add_and({b[i], x})); } id.push_back(add_and({add_or(A), add_or(B)})); swap(A, B); } add_or(id); }
#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...