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;
typedef vector<int> vim;
int chk[40010];
vim ans;
int H, W;
void f(int K)
{
vim Ns;
vim x, y, z;
int i, j, k;
for (i=0; i<H*W; i++) Ns.push_back(i);
int no=add_xor(Ns);
if (H+W-2<K) {
ans.push_back(no);
return ;
}
k=0;
for (i=0; i<H+W-1; i++) {
Ns={};
for (j=max(0, i-W+1); j<H&&(i-j)<W&&j<=i; j++, k++) Ns.push_back(W*j+(i-j));
x.push_back(add_or(Ns));
}
if (k!=H*W) {
puts("Error 1");
printf("%d", 1/0);
}
k=0;
for (i=-W+1; i<H; i++) {
Ns={};
for (j=max(i, 0); j<H&&j-i<W; j++, k++) Ns.push_back(j*(W+1)-i);
y.push_back(add_or(Ns));
}
if (k!=H*W) {
puts("Error 1");
printf("%d", 1/0);
}
int a1[410], a2[410];
a1[H+W-2]=add_or({x[H+W-2]});
for (i=H+W-3; i>=K; i--) {
a1[i]=add_or({a1[i+1],x[i]});
}
a2[0]=add_or({x[0]});
for (i=1; i<H+W-1-K; i++) {
a2[i]=add_or({a2[i-1],x[i]});
}
z.push_back(add_and({a1[K], x[0]}));
int n1, n2;
for (i=1; i<H+W-1; i++) {
n1=n2=-1;
if (i+K<H+W-2) n1=a1[i+K];
if (i>=K) n2=a2[i-K];
if (n1==-1&&n2==-1) continue;
else if (n1==-1&&n2!=-1) n1=n2;
else if (n2!=-1&&n2!=-1) n1=add_or({n1, n2});
z.push_back(add_and({n1, x[i]}));
}
a1[H+W-2]=add_or({y[H+W-2]});
for (i=H+W-3; i>=K; i--) {
a1[i]=add_or({a1[i+1],y[i]});
}
a2[0]=add_or({y[0]});
for (i=1; i<H+W-1-K; i++) {
a2[i]=add_or({a2[i-1],y[i]});
}
z.push_back(add_and({a1[K], y[0]}));
for (i=1; i<H+W-1; i++) {
n1=n2=-1;
if (i+K<H+W-2) n1=a1[i+K];
if (i>=K) n2=a2[i-K];
if (n1==-1&&n2==-1) continue;
else if (n1==-1&&n2!=-1) n1=n2;
else if (n2!=-1&&n2!=-1) n1=add_or({n1, n2});
z.push_back(add_and({n1, y[i]}));
}
ans.push_back(add_or(z));
}
void construct_network(int h, int w, int K) {
ans={};
H=h, W=w;
f(K);
f(K+1);
ans[1]=add_not(ans[1]);
add_and(ans);
}
Compilation message (stderr)
vision.cpp: In function 'void f(int)':
vision.cpp:27:17: warning: division by zero [-Wdiv-by-zero]
printf("%d", 1/0);
~^~
vision.cpp:37:17: warning: division by zero [-Wdiv-by-zero]
printf("%d", 1/0);
~^~
# | 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... |