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 xr[201],xc[201],r[201],c[201],od[401],od2[401];
vector <int> v,ve,ve2;
void construct_network(int H, int W, int K){
for (int i=0;i<H;i++){
v.clear();
for (int j=0;j<W;j++)
v.push_back(i*W+j);
xr[i]=add_xor(v);
r[i]=add_or(v);
v.clear();
for (int j=max(0,i-K+1);j<=i;j++)
v.push_back(xr[j]);
int X=add_not(add_xor(v));
v.clear();
for (int j=max(i-K+1,0);j<=i;j++)
v.push_back(r[j]);
ve.push_back(add_and({X,add_or(v)}));
}
for (int i=0;i<W;i++){
v.clear();
for (int j=0;j<H;j++)
v.push_back(j*W+i);
xc[i]=add_xor(v);
c[i]=add_or(v);
v.clear();
for (int j=max(i-K+1,0);j<=i;j++)
v.push_back(xc[i]);
int X=add_not(add_xor(v));
v.clear();
for (int j=max(i-K+1,0);j<=i;j++)
v.push_back(c[i]);
ve.push_back(add_and({X,add_or(v)}));
}
for (int i=0;i<H+W-1;i++){
v.clear();
for (int j=max(i-W+1,0);j<=min(i,H-1);j++)
v.push_back(j*(W-1)+i);
od[i]=add_or(v);
v.clear();
for (int j=max(0,H-i-1);j<min(H,H+W-i-1);j++)
v.push_back(j*(W+1)+i-H+1);
od2[i]=add_or(v);
if (i>=K){
ve2.push_back(add_and({od[i],od[i-K]}));
ve2.push_back(add_and({od2[i],od2[i-K]}));
}
}
add_and({add_or(ve),add_or(ve2)});
}
# | 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... |