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 <bits/stdc++.h>
#include "vision.h"
using namespace std;
typedef long long ll;
const int D = 405;
int h, w;
vector<int> diagL[D], diagR[D], prefL, prefR, ans;
void reset() {
prefL.clear();
prefR.clear();
ans.clear();
}
int solve(int k) {
reset();
for(int i = k; i <= h+w-2; i++) {
prefL.push_back(add_or(diagL[i-k]));
ans.push_back(add_and({add_or(prefL), add_or(diagL[i])}));
prefR.push_back(add_or(diagR[i-k]));
ans.push_back(add_and({add_or(prefR), add_or(diagR[i])}));
}
return add_or(ans);
}
void construct_network(int H, int W, int K) {
h = H, w = W;
for(int i = 0; i < h; i++) {
for(int j = 0; j < w; j++) {
diagL[i+j].push_back(i*w+j);
diagR[i+(w-j-1)].push_back(i*w+j);
}
}
if(H+W-2 == K) solve(K);
else add_and({solve(K), add_not(solve(K+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... |