#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);
		else add_not(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... |