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;
void construct_network(int H, int W, int K)
{
bool sk[302][302];
int qu1[302][302], qu2[302][302];
memset(sk, 0, sizeof(sk));
memset(qu1, 0, sizeof(qu1));
memset(qu2, 0, sizeof(qu2));
int query_number = H * W;
int z = 0;
for(int i = 0; i < H; ++i)
for(int j = 0; j < W; ++j)
{
vector<int>pz;
for(int p = 0; p <= i; ++p)
for(int z = 0; z < W; ++z)
if(abs(i - p) + abs(j - z) == K)
pz.push_back({p * W + z});
if(!pz.size())
sk[i][j] = 1;
else
++z, qu1[i][j] = query_number, add_or(pz), ++query_number;
if(z == 4999)
break;
}
for(int i = 0; i < H; ++i)
for(int j = 0; j < W; ++j)
{
if(sk[i][j])
continue;
add_and({i * W + j});
qu2[i][j] = query_number;
++query_number;
}
vector<int>p;
for(int i = 0; i < H; ++i)
for(int j = 0; j < W; ++j)
if(!sk[i][j])
p.push_back(query_number), add_and({qu1[i][j], qu2[i][j]}), ++query_number;
add_or(p);
}
| # | 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... |