#include "vision.h"
#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define ll long long
using namespace std;
int h, w, k;
int overk(vector<int> result) {
vector<int> dum1, dum2, checks;
if (k == w + h - 2) {
for (int i=0;i<h*w;i++) dum1.pb(i);
return add_not(add_or(dum1));
}
for (int i=0;i<h+w-2-k;i++) {
dum1.clear(); dum2.clear();
for (int j=0;j<=i;j++) dum1.pb(result[j]);
for (int j=i+k+1;j<h+w-1;j++) dum2.pb(result[j]);
checks.pb(add_and({add_or(dum1), add_or(dum2)}));
}
return add_or(checks);
}
int onk(vector<int> result) {
vector<int> checks;
for (int i=0;i<h+w-1-k;i++) {
checks.pb(add_and({result[i], result[i + k]}));
}
return add_or(checks);
}
void construct_network(int H, int W, int K) {
h = H; w = W; k = K;
if (h*w == 2) {
if (K != 1) add_not(0);
return;
}
int curnum = 0;
vector<vector<int>> diagvec1(h + w - 1), diagvec2(h + w - 1);
for (int i=0;i<h;i++) for (int j=0;j<w;j++) diagvec1[i + j].pb(i*w + j);
for (int i=0;i<h;i++) for (int j=0;j<w;j++) diagvec2[i + w - j - 1].pb(i*w + j);
vector<int> result1, result2;
for (int i=0;i<h+w-1;i++) {
result1.pb(add_xor(diagvec1[i]));
}
for (int i=0;i<h+w-1;i++) {
result2.pb(add_xor(diagvec2[i]));
}
int overk1 = overk(result1), overk2 = overk(result2), onk1 = onk(result1), onk2 = onk(result2);
//cout << overk1 << ' ' << overk2 << ' ' << onk1 << ' ' << onk2 << endl;
add_and({add_not(add_or({overk1, overk2})), add_or({onk1, onk2})});
return;
}
# | 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... |