Submission #590572

#TimeUsernameProblemLanguageResultExecution timeMemory
5905728e7Vision Program (IOI19_vision)C++17
100 / 100
29 ms2940 KiB
//Challenge: Accepted #include "vision.h" #include <bits/stdc++.h> using namespace std; #ifdef zisk void debug(){cout << endl;} template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);} template<class T> void pary(T l, T r) { while (l != r)cout << *l << " ", l++; cout << endl; } #else #define debug(...) 0 #define pary(...) 0 #endif #define ll long long #define maxn 100005 #define pii pair<int, int> #define ff first #define ss second void construct_network(int H, int W, int K) { vector<int> ask; int cur = H*W; for (int x = 0;x < H + W - 1;x++) { ask.clear(); for (int i = 0;i < H;i++) { int j = x - i; if (j >= 0 && j < W) { ask.push_back(i*W + j); } } add_or(ask); cur++; } for (int x = -H + 1;x < W;x++) { ask.clear(); for (int i = 0;i < H;i++) { int j = i + x; if (j >= 0 && j < W) { ask.push_back(i*W + j); } } add_or(ask); cur++; } auto id_ru = [&] (int x) { return x + H*W; }; auto id_dl = [&] (int x){ return x + H*W + H + W - 1; }; vector<int> has; for (int i = 0;i + K < H + W - 1;i++) { ask.clear(); ask.push_back(id_ru(i)); ask.push_back(id_ru(i+K)); add_and(ask); has.push_back(cur); cur++; } int hask = cur-1; for (int i = 0;i + K < H + W - 1;i++) { ask.clear(); ask.push_back(id_dl(i)); ask.push_back(id_dl(i+K)); add_and(ask); has.push_back(cur); cur++; } add_or(has); hask = cur++; vector<int> check(1, hask); for (int i = 0;i + K + 1 < H + W - 1;i++) { ask.clear(), has.clear(); has.push_back(id_ru(i)); for (int j = i + K + 1;j < H + W - 1;j++) { ask.push_back(id_ru(j)); } add_or(ask); has.push_back(cur); cur++; add_and(has); add_not(cur); check.push_back(cur + 1); cur += 2; ask.clear(), has.clear(); has.push_back(id_dl(i)); for (int j = i + K + 1;j < H + W - 1;j++) { ask.push_back(id_dl(j)); } add_or(ask); has.push_back(cur); cur++; add_and(has); add_not(cur); check.push_back(cur + 1); cur += 2; } add_and(check); /* std::vector<int> Ns; Ns = {0, 1}; int a = add_and(Ns); Ns = {0, a}; int b = add_or(Ns); Ns = {0, 1, b}; int c = add_xor(Ns); add_not(c); */ }
#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...