#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(), (x).end()
#define FOR(i, a, b) for (int i = a; i < b; i++)
#define each(a, x) for (auto &x : a)
#define srt(x) sort(all(x))
#define sz(x) (int) (x).size()
#define pb push_back
#define trace(x) for (auto &el : x) cout << el << " "
using pi = pair<int, int>;
using vi = vector<int>;
using vpi = vector<pi>;
int H, W, K;
int coord_to_int(int i, int j) {
return i * W + j;
}
int instruction_to_int(int i) {
return H * W + i;
}
pi int_to_coord(int inp) {
return {inp / W, inp % W};
}
int manhattan(int x1, int y1, int x2, int y2) {
return abs(x1 - x2) + abs(y1 - y2);
}
void construct_network(int _H, int _W, int _K) {
H = _H; W = _W; K = _K;
// vpi a, b;
vector<vi> potential(H*W, vi());
FOR(i, 0, H*W) {
pi coords = int_to_coord(i);
FOR(j, i + 1, H*W) {
pi coords2 = int_to_coord(j);
if (manhattan(coords.first, coords.second, coords2.first, coords2.second) != K) continue;
potential[i].pb(coord_to_int(coords2.first, coords2.second));
}
}
int tl_instructions = 0;
FOR(i, 0, H*W) {
if (sz(potential[i]) > 0) {
add_or(potential[i]);
add_and({instruction_to_int(2*tl_instructions), i});
tl_instructions++;
}
}
vi ors;
FOR(i, 0, tl_instructions) {
ors.pb(instruction_to_int(2*i+1));
}
add_or(ors);
}
# | 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... |