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 <vector>
#include <iostream>
using namespace std;
int check(int H, int W, int K) //check if dist <= K
{
vector<int> main_list[450];
vector<int> opp_list[450];
for(int i = 0; i < H*W; i++)
{
main_list[i/W + int(i%W)].push_back(i);
opp_list[i/W - int(i%W) + W-1].push_back(i);
}
vector<int> main_curr, main_prev, opp_curr, opp_prev;
vector<int> res;
for(int d = 0; d <= H+W-2; d++)
{
//main
main_curr.push_back(add_or(main_list[d]));
main_prev.push_back(add_or(main_curr));
if(d-K >= 0)
res.push_back(add_and({main_curr[d], main_prev[d-K]}));
opp_curr.push_back(add_or(opp_list[d]));
opp_prev.push_back(add_or(opp_curr));
if(d-K >= 0)
res.push_back(add_and({opp_curr[d], opp_prev[d-K]}));
}
return add_or(res);
}
void construct_network(int H, int W, int K)
{
if(K == H+W-2) check(H, W, K);
else add_xor({check(H, W, K), check(H, W, 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... |