#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
void construct_network(int H, int W, int K) {
auto ptoi = [&](int a, int b) { return a * W + b; };
auto itop = [&](int x) { return make_pair(x / W, x % W); };
map<int, vector<int>> add, mini;
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
add[i + j].push_back(ptoi(i, j));
mini[i - j].push_back(ptoi(i, j));
}
}
vector<vector<int>> avvi, mvvi;
for (auto a : add)
avvi.push_back(a.second);
for (auto a : mini)
mvvi.push_back(a.second);
vector<int> aor(H + W - 1), mor(H + W - 1);
for (int i = 0; i < H + W - 1; i++)
aor[i] = add_or(avvi[i]), mor[i] = add_or(mvvi[i]);
auto has2 = [&](vector<int> vi) {
int x = add_or(vi);
int y = add_xor(vi);
return add_xor({x, y});
};
vector<int> ahas2(avvi.size()), mhas2(mvvi.size());
for (int i = 0; i < avvi.size(); i++) {
ahas2[i] = add_xor({aor[i], add_xor(avvi[i])});
mhas2[i] = add_xor({mor[i], add_xor(mvvi[i])});
}
vector<int> ares, mres;
for (int i = 0; i + K < H + W - 1; i++) {
vector<int> vi;
for (int j = i; j <= i + K; j++) {
vi.push_back(aor[j]);
}
vector<int> vi2 = {has2(vi)};
for (int j = i; j <= i + K; j++) {
vi2.push_back(ahas2[j]);
}
ares.push_back(add_or(vi2));
}
for (int i = 0; i + K < H + W - 1; i++) {
vector<int> vi;
for (int j = i; j <= i + K; j++) {
vi.push_back(mor[j]);
}
vector<int> vi2 = {has2(vi)};
for (int j = i; j <= i + K; j++) {
vi2.push_back(mhas2[j]);
}
mres.push_back(add_or(vi2));
}
int sth1 = add_and({add_or(ares), add_or(mres)});
ares.clear(), mres.clear();
for (int i = 0; i + K - 1 < H + W - 1; i++) {
vector<int> vi;
for (int j = i; j <= i + K - 1; j++) {
vi.push_back(aor[j]);
}
vector<int> vi2 = {has2(vi)};
for (int j = i; j <= i + K - 1; j++) {
vi2.push_back(ahas2[j]);
}
ares.push_back(add_or(vi2));
}
for (int i = 0; i + K - 1 < H + W - 1; i++) {
vector<int> vi;
for (int j = i; j <= i + K - 1; j++) {
vi.push_back(mor[j]);
}
vector<int> vi2 = {has2(vi)};
for (int j = i; j <= i + K - 1; j++) {
vi2.push_back(mhas2[j]);
}
mres.push_back(add_or(vi2));
}
int sth2 = add_and({add_or(ares), add_or(mres)});
add_xor({sth1, sth2});
}
# | 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... |