Submission #617768

#TimeUsernameProblemLanguageResultExecution timeMemory
617768lorenzoferrariVision Program (IOI19_vision)C++17
0 / 100
6 ms1360 KiB
#include "vision.h" #include <vector> #include <cassert> using namespace std; void construct_network(int h, int w, int k) { int fid = add_xor({0,0}); vector<int> rows(h); vector<int> cols(w); for (int i = 0; i < h; ++i) { vector<int> q; for (int j = 0; j < w; ++j) { q.push_back(i*w + j); } rows[i] = add_or(q); } for (int j = 0; j < w; ++j) { vector<int> q; for (int i = 0; i < h; ++i) { q.push_back(i*w + j); } cols[j] = add_or(q); } auto add_fixed = [&](vector<int> v, int d) -> int { if (d >= (int)v.size()) return fid; vector<int> tor; for (int i = 0; i + d < (int)v.size(); ++i) { tor.push_back(add_and({v[i], v[i+d]})); } return add_or(tor); }; vector<int> dh(h+1); vector<int> dw(w+1); for (int i = 1; i <= h; ++i) dh[i] = add_fixed(rows, i); for (int i = 1; i <= w; ++i) dw[i] = add_fixed(cols, i); vector<int> nh(h); vector<int> nw(w); for (int i = 1; i <= h; ++i) nh[i-1] = add_not(dh[i]); for (int i = 1; i <= w; ++i) nw[i-1] = add_not(dw[i]); dh[0] = add_and(nh); dw[0] = add_and(nw); vector<int> tor; for (int i = 0; i <= k; ++i) { tor.push_back(add_and({dh[i], dw[k - i]})); } add_or(tor); }
#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...