Submission #723695

#TimeUsernameProblemLanguageResultExecution timeMemory
723695LittleCubeVision Program (IOI19_vision)C++14
0 / 100
25 ms3532 KiB
#include "vision.h" #include <bits/stdc++.h> #define pii pair<int, int> #define F first #define S second using namespace std; int id[405][405], last, zero; void construct_network(int H, int W, int K) { if (H * W == 2) return; last = H * W; for (int i = 1; i < H + W; i++) for (int j = 1; j < H + W; j++) id[i][j] = -1; for (int i = 0; i < H; i++) for (int j = 0; j < W; j++) id[j + i + 1][H - i + j] = i * W + j; vector<int> Hs(H + W), Ws(H + W); for (int i = 1; i < H + W; i++) { vector<int> input; for (int j = 1; j < H + W; j++) if (id[i][j] >= 0) input.emplace_back(id[i][j]); Hs[i] = last++; add_or(input); } for (int j = 1; j < H + W; j++) { vector<int> input; for (int i = 1; i < H + W; i++) if (id[i][j] >= 0) input.emplace_back(id[i][j]); Ws[j] = last++; add_or(input); } vector<int> HeqK, HgeK, WeqK, WgeK; for (int i = 1; i + K < H + W; i++) { HeqK.emplace_back(last++); add_and({Hs[i], Hs[i + K]}); } for (int j = 1; j + K < H + W; j++) { WeqK.emplace_back(last++); add_and({Ws[j], Ws[j + K]}); } for (int i = 1; i + K + 1 < H + W; i++) { vector<int> input; for (int j = i + K + 1; j < H + W; j++) input.emplace_back(Hs[j]); add_or(input); ++last; add_and({Hs[i], last - 1}); HgeK.emplace_back(last++); } for (int i = 1; i + K + 1 < H + W; i++) { vector<int> input; for (int j = i + K + 1; j < H + W; j++) input.emplace_back(Ws[j]); add_or(input); ++last; add_and({Ws[i], last - 1}); WgeK.emplace_back(last++); } if (HeqK.empty()) add_and({0, 1, 2}); else add_or(HeqK); if (WeqK.empty()) add_and({0, 1, 2}); else add_or(WeqK); if (HgeK.empty()) add_and({0, 1, 2}); else add_or(HgeK); if (WgeK.empty()) add_and({0, 1, 2}); else add_or(WgeK); add_or({last, last + 1}); // last + 4 = if dis == K add_not(last + 2); // last + 5 = if H <= K add_not(last + 3); // last + 6 = if W <= K add_and({last + 4, last + 5, last + 6}); }
#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...