#include <vector>
#include "vision.h"
using namespace std;
void construct_network(int h,int w,int k){
int n=h*w;
if(k==1){
int t=h*(w-1)+w*(h-1);
if(t>10000){
int n0=add_not(0);
add_and({0,n0});
return;
}
vector<int> e;
for(int i=0;i<h;i++){
for(int j=0;j<w-1;j++){
int idx=i*w+j;
e.push_back(add_and({idx,idx+1}));
}
}
for(int i=0;i<h-1;i++){
for(int j=0;j<w;j++){
int idx=i*w+j;
e.push_back(add_and({idx,idx+w}));
}
}
if(e.empty()){
int n0=add_not(0);
add_and({0,n0});
}else{
add_or(e);
}
}else{
vector<int> ns(n);
for(int i=0;i<n;i++) ns[i]=add_not(i);
vector<int> os;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
int r1=i/w,c1=i%w;
int r2=j/w,c2=j%w;
int d=abs(r1-r2)+abs(c1-c2);
if(d==k){
vector<int> in={i,j};
for(int x=0;x<n;x++){
if(x==i||x==j) continue;
in.push_back(ns[x]);
}
os.push_back(add_and(in));
}
}
}
if(os.empty()){
int n0=add_not(0);
add_and({0,n0});
}else{
add_or(os);
}
}
}
# | 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... |