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 "grader.cpp"
#include "vision.h"
#include <bits/stdc++.h>
#define pb(a) push_back(a)
using namespace std;
const int N = 405;
int h, w;
vector <vector<int>> d1(N),d2(N);
int pf1[N], pf2[N], di1[N], di2[N];
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++){
d1[i+j].pb(i*w+j);
d2[i-j+w-1].pb(i*w+j);
}
}
vector<int>ans1, ans2;
for(int i = 0 ; i < h+w -1; i++){
di1[i] = add_or(d1[i]);
di2[i] = add_or(d2[i]);
if(i){
pf1[i] = add_or({pf1[i-1], di1[i]});
pf2[i] = add_or({pf2[i-1], di2[i]});
}
else{
pf1[i] = add_or({di1[i]});
pf2[i] = add_or({di2[i]});
}
if(i>=k){
ans1.pb( add_and({ di1[i], pf1[i - k]}));
ans1.pb( add_and({ di2[i], pf2[i - k]}));
}
if(i>=k+1){
ans2.pb( add_and({ di1[i], pf1[i - k - 1]}));
ans2.pb( add_and({ di2[i], pf2[i - k - 1]}));
}
}
if(ans2.size()!=0)
add_xor({add_or(ans1), add_or(ans2)});
else
add_or(ans1);
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... |