제출 #1038819

#제출 시각아이디문제언어결과실행 시간메모리
1038819DorostWefVision Program (IOI19_vision)C++17
100 / 100
30 ms4700 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; void construct_network(int H, int W, int K) { int n = H + W - 1; vector <int> a; for (int s = 0; s < n; s++) { vector <int> v; for (int i = 0; i < H; i++) { int j = (s - i); if (j < 0 || j >= W) continue; v.push_back((i * W) + j); } a.push_back (add_or (v)); } int k = K; vector <int> w; for (int i = 0; i < n - k; i++) { w.push_back(add_and ({a[i], a[i + k]})); } int aa = add_or (w); w.clear(); for (int i = 0; i < n; i++) { vector <int> v; for (int j = 0; j < n; j++) { if (abs(i - j) > k) { v.push_back(a[j]); } } if (v.empty()) continue; w.push_back(add_and ({a[i], add_or (v)})); } w.push_back(add_and ({0, add_not (0)})); int ab = add_or (w); ab = add_not (ab); a.clear(); // wefwef for (int s = 0; s < n; s++) { int ss = s - (W - 1); vector <int> v; for (int i = 0; i < H; i++) { int j = (i - ss); if (j < 0 || j >= W) continue; v.push_back((i * W) + j); } a.push_back (add_or (v)); } w.clear(); for (int i = 0; i < n - k; i++) { w.push_back(add_and ({a[i], a[i + k]})); } int ba = add_or (w); w.clear(); for (int i = 0; i < n; i++) { vector <int> v; for (int j = 0; j < n; j++) { if (abs(i - j) > k) { v.push_back(a[j]); } } if (v.empty()) continue; w.push_back(add_and ({a[i], add_or (v)})); } w.push_back(add_and ({0, add_not (0)})); int bb = add_or (w); bb = add_not (bb); int c = add_or ({aa, ba}); add_and ({c, ab, bb}); }
#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...