#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define MT make_tuple
void brute_force(int h, int w, int k) {
int n = h*w;
set<tuple<int, int, int, int>> S;
for (int r1=0; r1<h; r1++) for (int c1=0; c1<w; c1++) {
for (int r2=0;r2<h; r2++) for (int c2=0; c2<w; c2++) {
if (abs(r1-r2) + abs(c1-c2) == k) {
tuple T1 = MT(r1, c1, r2, c2);
tuple T2 = MT(r2, c2, r1, c1);
if (S.contains(T1) || S.contains(T2)) continue;
S.insert(T1);
S.insert(T2);
int x = r1*w + c1;
int y = r2*w + c2;
add_and({x, y}); n++;
}
}
}
vector<int> vec;
for (int i=h*w; i<n; i++) vec.pb(i);
add_or(vec);
}
void construct_network(int h, int w, int k) {
auto f = [&](int r, int c) -> int {
return r*w + c;
};
vector<int> imp;
for (int r=0; r<h; r++) for (int c=0; c<w; c++) {
vector<int> vec;
for (int i=r; i<h; i++) for (int j=0; j<w; j++) if (abs(i-r) + abs(j-c) == k) vec.pb(f(i, j));
if (vec.empty()) continue;
int t = add_or(vec);
imp.pb(add_and({t, f(r, c)}));
}
add_or(imp);
}
# | 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... |