Submission #164567

#TimeUsernameProblemLanguageResultExecution timeMemory
164567NachoLibreVision Program (IOI19_vision)C++14
0 / 100
41 ms3780 KiB
#include <bits/stdc++.h> using namespace std; #include "vision.h" int h, w, c0, c1, d; int pti(int i, int j) { return w * i + j; } vector<int> md (int i, int d, int D) { /* 0 - / 1 - \ */ vector<int> v; v.push_back(D); if(i < 0) return v; int j; if (d) { j = h - 1; if(i >= w) { j -= i - w + 1; i = w - 1; } } else { j = 0; if(i >= w) { j += i - w + 1; i = w - 1; } } while (i >= 0 && j >= 0 && j < h) { v.push_back (pti(i, j)); if (d) --j; else ++j; --i; } return v; } int amatmata (int k) { vector<int> v; d = add_or({c0}); for(int i = 0; i < w + h - 1; ++i) { d = add_or (md (i - k, 0, d)); v.push_back (add_and ({add_or (md (i, 0, c0) ), d}) ); } d = add_or({c0}); for(int i = 0; i < w + h - 1; ++i) { d = add_or(md (i - k, 1, d)); v.push_back(add_and ({add_or (md (i, 1, c0) ), d}) ); } return add_or(v); } void construct_network (int H, int W, int K) { if (H * W == 2) { add_or ({0}); return; } c0 = add_and ({0, 1, 2}); c1 = add_not (c0); h = H; w = W; add_and({amatmata (K), add_not (amatmata (K + 1))}); }
#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...