#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()
void construct_network(int H,int W,int K){
vector<int>l[H+W];
for(int i=0;i<H;i++){
for(int j=0;j<W;j++){
l[i+j].pb(i*W+j);
}
}
int cur=H*W-1;
vector<int>L,L2;
//0 - H+W-2
for(int i=0;i<=H+W-2;i++){
add_or(l[i]); cur++;
L.pb(cur);
add_xor(l[i]); cur++;
add_not(cur); cur++;
add_and({cur,cur-2}); cur++;
L2.pb(cur);
}
vector<int>r[H+W];
for(int i=0;i<H;i++){
for(int j=0;j<W;j++){
r[i-j+(W-1)].pb(i*W+j);
}
}
vector<int>R,R2;
for(int i=0;i<=H+W-2;i++){
add_or(r[i]); cur++;
R.pb(cur);
add_xor(r[i]); cur++;
add_not(cur); cur++;
add_and({cur,cur-2}); cur++;
R2.pb(cur);
}
vector<int>v[2];
for(int i=K;i<=H+W-2;i++){
vector<int>Ns,N2s;
for(int j=i-K;j<=i;j++){
Ns.pb(L[j]);
}
for(int j=i-K;j<=i;j++){
N2s.pb(L2[j]);
}
add_or(Ns); cur++;
add_xor(Ns); cur++;
add_not(cur); cur++;
add_and({cur,cur-2}); cur++;
add_or(N2s); cur++;
add_or({cur,cur-1}); cur++;
v[0].pb(cur);
}
for(int i=K;i<=H+W-2;i++){
vector<int>Ns,N2s;
for(int j=i-K;j<=i;j++){
Ns.pb(L[j]);
}
for(int j=i-K;j<=i;j++){
N2s.pb(L2[j]);
}
add_or(Ns); cur++;
add_xor(Ns); cur++;
add_not(cur); cur++;
add_and({cur,cur-2}); cur++;
add_or(N2s); cur++;
add_or({cur,cur-1}); cur++;
v[1].pb(cur);
}
vector<int>u[2];
for(int i=K-1;i<=H+W-2;i++){
vector<int>Ns,N2s;
for(int j=i-K+1;j<=i;j++){
Ns.pb(L[j]);
}
for(int j=i-K+1;j<=i;j++){
N2s.pb(L2[j]);
}
add_or(Ns); cur++;
add_xor(Ns); cur++;
add_not(cur); cur++;
add_and({cur,cur-2}); cur++;
add_or(N2s); cur++;
add_or({cur,cur-1}); cur++;
u[0].pb(cur);
}
for(int i=K-1;i<=H+W-2;i++){
vector<int>Ns,N2s;
for(int j=i-K+1;j<=i;j++){
Ns.pb(R[j]);
}
for(int j=i-K+1;j<=i;j++){
N2s.pb(R2[j]);
}
add_or(Ns); cur++;
add_xor(Ns); cur++;
add_not(cur); cur++;
add_and({cur,cur-2}); cur++;
add_or(N2s); cur++;
add_or({cur,cur-1}); cur++;
u[1].pb(cur);
}
add_or(v[0]); cur++;
add_or(v[1]); cur++;
add_and({cur,cur-1}); cur++;
add_or(u[0]); cur++;
add_or(u[1]); cur++;
add_and({cur,cur-1}); cur++;
add_not(cur); cur++;
add_and({cur,cur-4});
}
# | 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... |