Submission #144800

#TimeUsernameProblemLanguageResultExecution timeMemory
144800Just_Solve_The_ProblemVision Program (IOI19_vision)C++14
100 / 100
46 ms5148 KiB
#include "vision.h" // #include "grader.cpp" #include <bits/stdc++.h> using namespace std; int h, w, k; int get(int x, int y) { return x * w + y; } bool check(int x, int y) { return (0 <= x && x < h && 0 <= y && y < w); } void construct_network(int H, int W, int K) { vector <int> asd[2][1000]; h = H; w = W; k = K; vector <int> v, v1; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { asd[0][i + j].push_back(get(i, j)); asd[1][w - 1 + i - j].push_back(get(i, j)); } } vector <int> c[2]; for (int i = 0; i < h + w - 1; i++) { c[0].push_back(add_or(asd[0][i])); c[1].push_back(add_or(asd[1][i])); } for (int i = 0; i < h + w - 1; i++) { vector <int> cur; for (int j = i - k - 1; j >= 0; j--) { cur.push_back(c[0][j]); } for (int j = i + k + 1; j < h + w - 1; j++) { cur.push_back(c[0][j]); } if (!cur.empty()) v.push_back(add_and({add_or(cur), c[0][i]})); cur.clear(); for (int j = i - k - 1; j >= 0; j--) { cur.push_back(c[1][j]); } for (int j = i + k + 1; j < h + w - 1; j++) { cur.push_back(c[1][j]); } if (!cur.empty()) v.push_back(add_and({add_or(cur), c[1][i]})); if (i - k >= 0) { v1.push_back(add_and({c[0][i - k], c[0][i]})); v1.push_back(add_and({c[1][i - k], c[1][i]})); } } int ans1 = -1; if (!v.empty()) ans1 = add_not(add_or(v)); int as = add_or(v1); if (ans1 != -1) { add_and({as, ans1}); } }
#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...