#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
const int MAXN=405;
int N, M;
vector <int> miring[MAXN];
vector <int> allor;
vector <int> allxor;
vector <int> segment;
vector <int> ans;
int adaxor(int l,int r) {
segment.clear();
for (int i=l;i<=r;i++) {
segment.push_back(allxor[i]);
}
return add_xor(segment);
}
int adaor(int l,int r) {
segment.clear();
for (int i=l;i<=r;i++) {
segment.push_back(allor[i]);
}
return add_or(segment);
}
int bisa(int K) {
allor.clear();
allxor.clear();
for (int i=0;i<N+M-1;i++) {
allor.push_back(add_or(miring[i]));
allxor.push_back(add_xor(miring[i]));
}
ans.clear();
for (int i=K;i<N+M-1;i++) {
ans.push_back(add_and({adaor(i-K,i),add_not(adaxor(i-K,i))}));
}
return add_or(ans);
}
int gabung(int x,int y,bool T) {
if (T) {
return x+y;
}
return x-y+M-1;
}
int dekat(int K,bool T) {
for (int i=0;i<N+M-1;i++) {
miring[i].clear();
}
for (int i=0;i<N;i++) {
for (int j=0;j<M;j++) {
miring[gabung(i,j,T)].push_back(i*M+j);
}
}
return bisa(K);
}
int jawab(int K) {
return add_and({dekat(K,0),dekat(K,1)});
}
void construct_network(int H,int W,int K) {
N=H;
M=W;
add_and({jawab(K),add_not(jawab(K-1))});
return;
}
# | 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... |