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 <bits/stdc++.h>
#include "vision.h"
using namespace std;
int dist (int x1, int y1, int x2, int y2) {
return abs(x2 - x1) + abs(y2 - y1);
}
void construct_network(int H, int W, int K) {
//add_and({0, add_not(0)}) = 0
//add_or({0, add_not(0)}) = 1
if (H * W <= 100) {
vector <int> last;
for (int i1 = 0; i1 < H; i1++){
for (int j1 = 0; j1 < W; j1++){
for (int i2 = 0; i2 < H; i2++){
for (int j2 = 0; j2 < W; j2++){
if (dist(i1, j1, i2, j2) == K) {
last.push_back(add_and({i1 * W + j1, i2 * W + j2}));
}
}
}
}
}
add_or(last);
}
else if (K == 1) {
int op = 0;
vector <int> row, col;
for (int i = 0; i < H; i++){
vector <int> v;
for (int j = 0; j < W; j++){
v.push_back(i * W + j);
}
row.push_back(add_or(v));
}
for (int j = 0; j < W; j++){
vector <int> v;
for (int i = 0; i < H; i++){
v.push_back(i * W + j);
}
col.push_back(add_or(v));
}
vector <int> rs;
vector <int> rdif, cdif;
for (int i = 0; i + K < H; i++){
rdif.push_back(add_and({row[i], row[i + K]}));
}
for (int i = 0; i + K < W; i++){
cdif.push_back(add_and({col[i], col[i + K]}));
}
int c1 = add_and({0, add_not(0)});
int c2 = add_and({0, add_not(0)});
if (!cdif.empty()) c1 = add_and({add_xor(row), add_xor(cdif)});
if (!rdif.empty()) c2 = add_and({add_xor(col), add_xor(rdif)});
add_or({c1, c2});
}
else {
vector <int> last;
for (int i = 0; i < H; i++){
for (int j = 0; j < W; j++){
if ((i != 0 || j != 0) && i + j == K) last.push_back(add_or({i * W + j}));
}
}
add_or(last);
}
}
Compilation message (stderr)
vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:28:7: warning: unused variable 'op' [-Wunused-variable]
28 | int op = 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... |