This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "vision.h"
void construct_network(int H, int W, int K) {
std::vector <int> res, res1;
if (K == 1) {
std::vector <int> row, col;
for (int i = 0; i < H; ++i) {
std::vector <int> cur;
for (int j = 0; j < W; ++j)
cur.push_back(i * W + j);
int x = add_or(cur);
row.push_back(x);
}
for (int j = 0; j < W; ++j) {
std::vector <int> cur;
for (int i = 0; i < H; ++i)
cur.push_back(i * W + j);
int x = add_or(cur);
col.push_back(x);
}
int rs1 = row[0];
for (int i = 0; i < H - 1; ++i)
rs1 = add_or({rs1, add_and({row[i], row[i + 1]})});
int rs2 = col[0];
for (int i = 0; i < W - 1; ++i)
rs2 = add_or({rs2, add_and({col[i], col[i + 1]})});
int total = add_and({rs1, rs2});
int result = row[0];
for (int i = 1; i < H; ++i)
result = add_xor({result, row[i]});
for (int i = 0; i < W; ++i)
result = add_xor({(result == -1) ? col[i] : result, col[i]});
add_and({total, result});
return;
}
if (((H > 30) || (W > 30)) && (H > 1) && (W > 1)) {
for (int x = 0; x < H; ++x)
for (int y = 0; y < W; ++y) {
if (x + y != K)
continue;
res.push_back(x * W + y);
}
add_or(res);
add_and({0, H * W});
} else {
int cnt = 0;
for (int x1 = 0; x1 < H; ++x1)
for (int y1 = 0; y1 < W; ++y1) {
std::vector <int> cur;
for (int x2 = 0; x2 < H; ++x2)
for (int y2 = 0; y2 < W; ++y2) {
if ((abs(x1 - x2) + abs(y1 - y2)) != K)
continue;
cur.push_back(x2 * W + y2);
}
if (cur.empty())
continue;
add_or(cur);
res.push_back(H * W + cnt);
++cnt;
add_and({x1 * W + y1, res.back()});
res1.push_back(H * W + cnt);
++cnt;
}
add_or(res1);
}
}
# | 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... |