#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
const int LOG=9;
int N, M, P;
int ans[LOG];
void sum() {
	int S=P, T;
	for (int i=0;i<LOG;i++) {
		T=add_and({S,ans[i]});
		ans[i]=add_xor({S,ans[i]});
		S=T;
	}
}
void row(int x) {
	vector <int> V={P};
	for (int i=0;i<M;i++) {
		V.push_back(x*M+i);
	}
	P=add_xor(V);
	sum();
}
void col(int x) {
	vector <int> V={P};
	for (int i=0;i<N;i++) {
		V.push_back(i*M+x);
	}
	P=add_xor(V);
	sum();
}
void build(int H,int W) {
	N=H;
	M=W;
	P=add_and({0,add_not(0)});
	for (int i=0;i<LOG;i++) {
		ans[i]=P;
	}
}
void prefix() {
	for (int i=0;i<N;i++) {
		row(i);
	}
	for (int i=0;i<M;i++) {
		col(i);
	}
}
void equal(int K) {
	int S=P;
	for (int i=0;i<LOG;i++) {
		if ((K>>i)&1) {
			ans[i]=add_not(ans[i]);
		}
		S=add_or({S,ans[i]});
	}
	add_not(S);
}
void construct_network(int H,int W,int K) {
	build(H,W);
	prefix();
	equal(K);
}
| # | 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... |