Submission #578722

#TimeUsernameProblemLanguageResultExecution timeMemory
578722VanillaVision Program (IOI19_vision)C++17
55 / 100
11 ms1144 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; int dist (int x1, int y1, int x2, int y2) { return abs(x2 - x1) + abs(y2 - y1); } void construct_network(int H, int W, int K) { //add_and({0, add_not(0)}) = 0 //add_or({0, add_not(0)}) = 1 if (H * W <= 200) { vector <int> last; for (int i1 = 0; i1 < H; i1++){ for (int j1 = 0; j1 < W; j1++){ for (int i2 = 0; i2 < H; i2++){ for (int j2 = 0; j2 < W; j2++){ if (dist(i1, j1, i2, j2) == K) { last.push_back(add_and({i1 * W + j1, i2 * W + j2})); } } } } } add_or(last); } else if (K == 1) { int op = 0; vector <int> row, col; for (int i = 0; i < H; i++){ vector <int> v; for (int j = 0; j < W; j++){ v.push_back(i * W + j); } row.push_back(add_or(v)); } for (int j = 0; j < W; j++){ vector <int> v; for (int i = 0; i < H; i++){ v.push_back(i * W + j); } col.push_back(add_or(v)); } vector <int> rs; vector <int> rdif, cdif; for (int i = 0; i + K < H; i++){ rdif.push_back(add_and({row[i], row[i + K]})); } for (int i = 0; i + K < W; i++){ cdif.push_back(add_and({col[i], col[i + K]})); } int c1 = add_and({0, add_not(0)}); int c2 = add_and({0, add_not(0)}); if (!cdif.empty()) c1 = add_and({add_xor(row), add_xor(cdif)}); if (!rdif.empty()) c2 = add_and({add_xor(col), add_xor(rdif)}); add_or({c1, c2}); } else { vector <int> last; for (int i = 0; i < H; i++){ for (int j = 0; j < W; j++){ if ((i != 0 || j != 0) && i + j == K) last.push_back(add_or({i * W + j})); } } add_or(last); } }

Compilation message (stderr)

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:28:7: warning: unused variable 'op' [-Wunused-variable]
   28 |   int op = 0;
      |       ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...