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;
void construct_network(int H, int W, int K) {
int cur = H * W;
if(K == 1) {
for(int i = 0; i < H; i++) {
vector<int> Ns;
for(int j = 0; j < W; j++)
Ns.push_back(i * W + j);
add_xor(Ns);
cur++;
}
vector<int> Ns;
for(int i = 0; i < H; i++) {
for(int j = 0; j < W; j++) {
Ns.push_back(i * W + j);
}
}
add_xor(Ns);
cur++;
Ns.clear();
for(int j = 0; j < W; j++) {
vector<int> Ns;
for(int i = 0; i < H; i++) {
Ns.push_back(i * W + j);
}
add_xor(Ns);
cur++;
}
int t = cur;
for(int i = H * W; i < t - 1; i++) {
add_and({i, i + 1});
cur++;
}
for(int i = t; i < cur; i++) {
Ns.push_back(i);
}
add_xor(Ns);
return;
}
for(int x1 = 0; x1 < H; x1++) {
for(int y1 = 0; y1 < W; y1++) {
vector<int> Ns;
for(int d = -K + 1; d <= K; d++) {
int x2 = x1 + d, y2 = y1 + K - abs(d);
if(x2 < 0 || x2 >= H || y2 < 0 || y2 >= W) continue;
Ns.push_back(x2 * W + y2);
}
if(!Ns.empty()) {
add_or(Ns);
add_and({cur, x1 * W + y1});
cur += 2;
}
}
}
vector<int> ns;
for(int i = H * W + 1; i < cur; i += 2)
ns.push_back(i);
add_or(ns);
}
# | 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... |