# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1118536 | adaawf | Vision Program (IOI19_vision) | C++17 | 0 ms | 0 KiB |
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>
using namespace std;
void construct_network(int h, int w, int k) {
int x = 0, y = 0;
vector<int> va;
for (int i = 0; i <= 15; i++) {
vector<int> v;
for (int j = 0; j < h * w; j++) {
if (j & (1 << i)) {
v.push_back(j);
}
}
if (add_or(v)) {
if (add_xor(v)) va.push_back(i);
else {
x += (1 << i);
y += (1 << i);
}
}
}
for (int i = 0; i < (1 << v.size()); i++) {
int z = x, t = y;
for (int j = 0; j < v.size(); j++) {
if (i & (1 << j)) z += (1 << v[j]);
else t += (1 << v[j]);
}
if (z < 0 || t < 0 || z >= h * w || t >= h * w || z > t) continue;
int u = z / h, v = z % h, uu = t / h, vv = t % h;
if (abs(uu - u) + abs(vv - v) != k) continue;
if (add_and(z, t)) {
return;
}
}
add_and(0, 1);
}