Submission #1246868

#TimeUsernameProblemLanguageResultExecution timeMemory
1246868elfwingVision Program (IOI19_vision)C++20
0 / 100
3 ms932 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; using int_t = int64_t; using int128 = __int128_t; using ld = long double; using pi = pair<int_t, int_t>; using vi = vector<int_t>; using vvi = vector<vi>; constexpr int_t INF{numeric_limits<int_t>::max()}; int H_; int W_; void construct_network(int H, int W, int K) { H_ = H; W_ = W; vector<int> Ns; vector<pi> kPos; int_t dem; vector<int> lf; vector<int> rg; int_t low = 0; int_t hig = H * W; int pic1 = -1; int pic2 = -1; int_t llow = 0; int_t lhig = 0; int_t rlow = 0; int_t rhig = 0; while (lf.empty()) { vector<int> lm; vector<int> rm; if (hig - low == 2) { pic1 = low; pic2 = hig - 1; break; } for (int_t i = low; i < hig; i++) { if (i < (low + hig) / 2) { lm.push_back(i); } else { rm.push_back(i); } } int_t c1 = add_or(lm); cin >> c1; if (c1 == 1) { int_t c2 = add_or(rm); cin >> c2; if (c2 == 0) { hig = lm.back() + 1; } else { llow = low; lhig = lm.back() + 1; rlow = rm[0]; rhig = hig; lf = lm; rg = rm; } } else { low = rm[0]; } } while (pic1 == -1) { vector<int> lm; vector<int> rm; if (lhig - llow <= 1) { pic1 = llow; break; } for (int_t i = llow; i < lhig; i++) { if (i < (llow + lhig) / 2) { lm.push_back(i); } else { rm.push_back(i); } } int_t c1 = add_or(lm); cin >> c1; if (c1 == 1) { lhig = lm.back() + 1; if (lm.size() == 1) { pic1 = lm[0]; } } else { if (lm.size() == 1) { pic1 = rm[0]; } llow = rm[0]; } } while (pic2 == -1) { vector<int> lm; vector<int> rm; if (rhig - rlow <= 1) { pic2 = rlow; break; } for (int_t i = rlow; i < rhig; i++) { if (i < (rlow + rhig) / 2) { lm.push_back(i); } else { rm.push_back(i); } } int_t c1 = add_or(lm); cin >> c1; if (c1 == 1) { rhig = lm.back() + 1; if (lm.size() == 1) { pic2 = lm[0]; } } else { if (lm.size() == 1) { pic2 = rm[0]; } rlow = rm[0]; } } int_t c1, r1, c2, r2; c1 = pic1 / W; c2 = pic2 / W; r1 = pic1 % H; r2 = pic2 % H; if (abs(c1 - c2) + abs(r1 - r2) == K) { add_xor({pic1, pic2}); } else { add_or({pic1, pic2}); } return; }
#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...