#include "vision.h"
#include<bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define f0r(i,n) for(int i = 0; i<n; i++)
#define FOR(i, k, n) for(int i =k; i<n; i++)
#define vi vector<int>
#define pii pair<int,int>
#define vvi vector<vector<int>>
#define vb vector<bool>
#define vpii vector<pii>
#define mii map<int,int>
#define dout(x) cout<<x<<' '<<#x<<endl;
#define vout(x) for(auto u : x)cout<<u<<' '; cout<<endl;
#define out(x) cout<<x<<endl;
#define out2(x,y) cout<<x<<' '<<y<<endl;
using namespace std;
void construct_network(int H, int W, int K) {
	/*
	vi dexes;
	f0r(i, 1){
		f0r(j, 1){
			f0r(k, H){
				f0r(l, W){
					if(abs(i - k) + abs(j - l) == K && i * W + j < k * W + l){
						vi quer;
						quer.pb(i*W+j);
						quer.pb(k*W+l);
						int a = add_and(quer);
						dexes.pb(a);
					}
				}
			}
		}
	}
	add_or(dexes);
	*/
	vi hor;
	vi ver;
	f0r(i, H){
		vi quer;
		f0r(j, W){
			quer.pb(i*W+j);
		}
		int a = add_or(quer);
		hor.pb(a);
	}
	
	f0r(i, W){
		vi quer;
		f0r(j, H){
			quer.pb(j*W+i);
		}
		int a = add_or(quer);
		ver.pb(a);
	}
	
	vi fin;
	for(int i = 1; i<K; i++){
		//i, K-i
		if(i < H && K - i < W){
			vi hh;
			for(int j = 0; j < H - i; j++){
				vi quer;
				quer.pb(hor[j]);
				quer.pb(hor[j + i]);
				int a = add_and(quer);
				hh.pb(a);
			}
			int hashor = add_or(hh);
			vi vv;
			for(int j = 0; j<W-i; j++){
				vi quer;
				quer.pb(ver[j]);
				quer.pb(ver[j + K - i]);
				int a = add_and(quer);
				vv.pb(a);
			}
			int hasver = add_or(vv);
			int b = add_and({hashor, hasver});
			fin.pb(b);
		}
		
	}
	if(K < W){
		vi quer;
		f0r(i, H){
			quer.pb(hor[i]);
		}
		
		int a = add_xor(quer);
		int b = add_not(a);
		vi hh;
		for(int i = 0; i < W - K; i++){
			vi quer;
			quer.pb(hor[i]);
			quer.pb(hor[i + K]);
			int a = add_and(quer);
			hh.pb(a);
		}
		int c = add_or(hh);
		int d = add_and({b, c});
		fin.pb(d);
	}
	
	if(K < H){
		vi quer;
		f0r(i, W){
			quer.pb(ver[i]);
		}
		
		int a = add_xor(quer);
		int b = add_not(a);
		vi hh;
		for(int i = 0; i < H - K; i++){
			vi quer;
			quer.pb(ver[i]);
			quer.pb(ver[i + K]);
			int a = add_and(quer);
			hh.pb(a);
		}
		int c = add_or(hh);
		int d = add_and({b, c});
		fin.pb(d);
	}
	add_or(fin);
	
	
	
	/*
	std::vector<int> Ns;
	Ns = {0, 1};
	int a = add_and(Ns);
	Ns = {0, a};
	int b = add_or(Ns);
	Ns = {0, 1, b};
	int c = add_xor(Ns);
	add_not(c);
	*/
}
| # | 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... |