이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "vision.h"
#include <bits/stdc++.h>
void construct_network(int h, int w, int k) {
add_not(0);
std::vector<std::vector<int> > r0(h + w - 1);
std::vector<std::vector<int> > r1(h + w - 1);
for (int i = 0; i < h; i++) for (int j = 0; j < w; j++) {
r0[i + j].push_back(w * i + j);
r1[i - j + (w - 1)].push_back(w * i + j);
}
int base_raw0 = h * w + 1;
for (auto &i : r0) add_or(i);
int base_raw1 = base_raw0 + (h + w - 1);
for (auto &i : r1) add_or(i);
int forward0 = base_raw1 + (h + w - 1);
add_and({0, h * w});
for (int i = 0; i < h + w - 1; i++) add_or({forward0 + i, base_raw0 + i});
int back0 = forward0 + h + w;
add_and({0, h * w});
for (int i = 0; i < h + w - 1; i++) add_or({back0 + i, base_raw0 + (h + w - 2) - i});
int forward1 = back0 + h + w;
add_and({0, h * w});
for (int i = 0; i < h + w - 1; i++) add_or({forward1 + i, base_raw1 + i});
int back1 = forward1 + h + w;
add_and({0, h * w});
for (int i = 0; i < h + w - 1; i++) add_or({back1 + i, base_raw1 + (h + w - 2) - i});
int prev = back1 + h + w;
add_and({0, h * w});
int band = h + w - k - 1;
for (int i = 0; i <= band; i++) {
add_and({forward0 + i, back0 + (band - i)});
add_or({prev, prev + 1});
add_and({forward1 + i, back1 + (band - i)});
add_or({prev + 2, prev + 3});
prev += 4;
}
// if (prev) -> return false
add_and({0, h * w});
int oring = prev + 1;
for (int i = 0; i + k < h + w - 1; i++) {
add_and({base_raw0 + i, base_raw0 + i + k});
add_or({oring, oring + 1});
add_and({base_raw1 + i, base_raw1 + i + k});
add_or({oring + 2, oring + 3});
oring += 4;
}
// oring && !prev
add_not(prev);
add_and({oring, oring + 1});
}
/*
int main() {
return 0;
}*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |