#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
const int MAXN=405;
int N, M;
vector <int> miring[MAXN];
vector <int> allor;
vector <int> allxor;
vector <int> segment;
vector <int> ans;
int adaxor(int l,int r) {
	segment.clear();
	
	for (int i=l;i<=r;i++) {
		segment.push_back(allxor[i]);
	}
	
	return add_xor(segment);
}
int adaor(int l,int r) {
	segment.clear();
	
	for (int i=l;i<=r;i++) {
		segment.push_back(allor[i]);
	}
	
	return add_or(segment);
}
int bisa(int K) {
	allor.clear();
	allxor.clear();
	
	for (int i=0;i<N+M-1;i++) {
		allor.push_back(add_or(miring[i]));
		allxor.push_back(add_xor(miring[i]));
	}
	
	ans.clear();
	
	for (int i=K;i<N+M-1;i++) {
		ans.push_back(add_and({adaor(i-K,i),add_not(adaxor(i-K,i))}));
	}
	
	return add_or(ans);
}
int gabung(int x,int y,bool T) {
	if (T) {
		return x+y;
	}
	
	return x-y+M-1;
}
int dekat(int K,bool T) {
	for (int i=0;i<N+M-1;i++) {
		miring[i].clear();
	}
	
	for (int i=0;i<N;i++) {
		for (int j=0;j<M;j++) {
			miring[gabung(i,j,T)].push_back(i*M+j);
		}
	}
	
	return bisa(K);
}
int jawab(int K) {
	return add_and({dekat(K,0),dekat(K,1)});
}
void construct_network(int H,int W,int K) {
	N=H;
	M=W;
	
	add_and({jawab(K),add_not(jawab(K-1))});
	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... |