This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
int dx[4] = {1,1,-1,-1};
int dy[4] = {-1,1,1,-1};
void construct_network(int H, int W, int K) {
if(max(H,W) <= 10 || min(H,W) == 1){
vector<int>fin;
int cnt = H*W;
for(int i=0;i<H;i++){
for(int j=0;j<W;j++){
for(int k=0;k<=K;k++){
for(int q=0;q<4;q++){
int x = i+dx[q]*k;
int y = j+dy[q]*(K-k);
if(x>=0 && y>=0 && x<H && y<W){
if(x*W+y > i*W+j){
add_and({x*W +y,i*W+j});
fin.push_back(cnt++);
}
}
}
}
}
}
add_or(fin);
return;
}
if(K==1){
int cnt = H*W-1;
for(int i=0;i<H;i++){
vector<int>v;
for(int j=0;j<W;j++){
v.push_back(i*W+j);
}
add_xor(v);
cnt++;
}
//first W are row xor
//H+w are col xor
for(int i=0;i<W;i++){
vector<int>v;
for(int j=0;j<H;j++){
v.push_back(j*W+H);
}
add_xor(v);
cnt++;
}
//H*W -> H*w+H-1;
//H*W+H ->H*W+H+W-1;
vector<int>rnot,rgap;
vector<int>cnot,cgap;
for(int i=0;i<H;i++){
add_not(H*W+i);
rnot.push_back(++cnt);
}
for(int j=0;j<W;j++){
add_not((H+1)*W+j);
cnot.push_back(++cnt);
}
for(int i=0;i<H;i++){
if(i){
add_and({H*W+i,H*W+i-1});
rgap.push_back(++cnt);
}
}
for(int i=0;i<W;i++){
if(i){
add_and({H*W+H+i,H*W+H+i-1});
cgap.push_back(++cnt);
}
}
int a=cnt++;
int b=cnt++;
int c=cnt++;
int d=cnt++;
add_and(rnot);
add_and(cnot);
add_or(rgap);
add_or(cgap);
add_and({a,d});
add_and({b,c});
cnt++;
cnt++;
add_or({cnt,cnt-1});
}
}
# | 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... |