#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
void construct_network(int h, int w, int k) {
//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);
auto conv = [&] (int i, int j){
return i*w+j;
};
int cn = 0;
set<array<int,2>>s;
for(int i = 0;i<h;i++){
for(int j = 0;j<w;j++){
for(int ai = 0;ai<=k;ai++){
int ci = i+ai;
int ji = j+(k-ai);
if(ci>=h||ji>=w||ci<0||ji<0){
continue;
}
int initi = conv(i,j);
int fini = conv(ci,ji);
if(s.find({initi,fini})!=s.end()||s.find({fini,initi})!=s.end())
continue;
add_and({initi,fini});
s.insert({initi,fini});
cn++;
}
for(int ai = 0;ai<=k;ai++){
int ci = i-ai;
int ji = j+(k-ai);
if(ci>=h||ji>=w||ci<0||ji<0){
continue;
}
int initi = conv(i,j);
int fini = conv(ci,ji);
if(s.find({initi,fini})!=s.end()||s.find({fini,initi})!=s.end())
continue;
add_and({initi,fini});
s.insert({initi,fini});
cn++;
}
}
}
vector<int>quer;
for(int i = 0;i<cn;i++)
quer.push_back(i+h*w);
add_or(quer);
}
# | 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... |