Submission #1237996

#TimeUsernameProblemLanguageResultExecution timeMemory
1237996Ghulam_JunaidVision Program (IOI19_vision)C++20
100 / 100
16 ms3404 KiB
#include <bits/stdc++.h> #include "vision.h" // #include "grader.cpp" using namespace std; int h, w, k, cur, diag_inds[2][400], diag_or[2][400], diag_isk[2], exist_ink[2][400], parity_ink[2][400], diag_lk[2][400], diag_isz[2], diag_islk[2]; vector<int> diags[2][400]; int get_id(int x, int y){ return x * w + y; } int dist(int r1, int c1, int r2, int c2){ return abs(r1 - r2) + abs(c1 - c2); } void construct_network(int H, int W, int K) { h = H, w = W, k = K, cur = h * w; for (int r = 0; r < h; r ++){ for (int c = 0; c < w; c ++){ diags[0][dist(0, 0, r, c)].push_back(get_id(r, c)); diags[1][dist(0, w - 1, r, c)].push_back(get_id(r, c)); } } for (int id : {0, 1}){ for (int i = 0; i <= h + w - 2; i ++) diag_inds[id][i] = add_or(diags[id][i]); vector<int> vec; for (int i = 0; i + k <= h + w - 2; i ++){ diag_or[id][i] = add_and({diag_inds[id][i], diag_inds[id][i + k]}); vec.push_back(diag_or[id][i]); } diag_isk[id] = add_or(vec); vec.clear(); for (int i = 0; i <= h + w - 2; i ++) vec.push_back(diag_inds[id][i]); diag_isz[id] = add_xor(vec); vector<int> overall_lk; vec.clear(); for (int i = 0; i + k <= h + w - 2; i ++){ vec.clear(); for (int j = i; j <= i + k; j ++) vec.push_back(diag_inds[id][j]); exist_ink[id][i] = add_or(vec); parity_ink[id][i] = add_not(add_xor(vec)); diag_lk[id][i] = add_and({exist_ink[id][i], parity_ink[id][i]}); overall_lk.push_back(diag_lk[id][i]); } overall_lk.push_back(diag_isz[id]); diag_islk[id] = add_or(overall_lk); } int one_eq = add_or({diag_isk[0], diag_isk[1]}); int both_lk = add_and({diag_islk[0], diag_islk[1]}); int final_res = add_and({one_eq, both_lk}); }
#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...