제출 #422826

#제출 시각아이디문제언어결과실행 시간메모리
422826SSRSVision Program (IOI19_vision)C++14
55 / 100
14 ms1612 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; void construct_network(int H, int W, int K){ if (K == 1){ 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> a2(mx - 1), b2(mx - 1); for (int i = 0; i < mx - 1; i++){ a2[i] = add_and({a[i], a[i + 1]}); b2[i] = add_and({b[i], b[i + 1]}); } int X = add_or(a2); int Y = add_or(b2); add_and({X, Y}); } else { vector<int> A; if (max(H, W) <= 30 || min(H, W) == 1){ for (int x1 = 0; x1 < H; x1++){ for (int y1 = 0; y1 < W; y1++){ for (int x2 = 0; x2 < H; x2++){ for (int y2 = 0; y2 < W; y2++){ if (abs(x2 - x1) + abs(y2 - y1) == K){ int a = x1 * W + y1; int b = x2 * W + y2; if (a < b){ A.push_back(add_and({a, b})); } } } } } } } else { for (int x = 0; x < H; x++){ for (int y = 0; y < W; y++){ if (x + y == K){ int a = x * W + y; A.push_back(add_and({0, a})); } } } } add_or(A); } }
#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...