Submission #1042513

#TimeUsernameProblemLanguageResultExecution timeMemory
1042513SharkyVision Program (IOI19_vision)C++17
100 / 100
34 ms3800 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; map<int, int> l1, l2, r1, r2; int lk, lleqk, rk, rleqk, lz, rz; void construct_network(int H, int W, int K) { vector<int> lzv, rzv; for (int tar = 0; tar <= H + W - 2; tar++) { vector<int> arg; for (int i = 0; i < H; i++) { for (int j = 0; j < W; j++) { if (i + j == tar) arg.push_back(i * W + j); } } l1[tar] = add_or(arg); int tmp = add_xor(arg); tmp = add_not(tmp); l2[tar] = add_and(vector<int> {l1[tar], tmp}); lzv.push_back(l2[tar]); } for (int tar = -W + 1; tar <= H - 1; tar++) { vector<int> arg; for (int i = 0; i < H; i++) { for (int j = 0; j < W; j++) { if (i - j == tar) arg.push_back(i * W + j); } } r1[tar] = add_or(arg); int tmp = add_xor(arg); tmp = add_not(tmp); r2[tar] = add_and(vector<int> {r1[tar], tmp}); rzv.push_back(r2[tar]); } lz = add_or(lzv); rz = add_or(rzv); vector<int> arg; for (int lb = 0; lb <= H + W - 2; lb++) { int rb = lb + K; if (rb <= H + W - 2) arg.push_back(add_and(vector<int> {l1[lb], l1[rb]})); } lk = add_or(arg); arg.clear(); vector<int> arg2; for (int lb = 0; lb <= H + W - 3; lb++) { int rb = lb + K; for (int i = lb + 1; i <= min(H + W - 2, rb); i++) arg.push_back(l1[i]); int tmp = add_or(arg); arg.clear(); arg2.push_back(add_and(vector<int> {l1[lb], tmp})); } arg2.push_back(lz); lleqk = add_or(arg2); arg2.clear(); for (int lb = -W + 1; lb <= H - 1; lb++) { int rb = lb + K; if (rb <= H - 1) arg.push_back(add_and(vector<int> {r1[lb], r1[rb]})); } rk = add_or(arg); arg.clear(); for (int lb = -W + 1; lb <= H - 2; lb++) { int rb = lb + K; for (int i = lb + 1; i <= min(H - 1, rb); i++) arg.push_back(r1[i]); int tmp = add_or(arg); arg.clear(); arg2.push_back(add_and(vector<int> {r1[lb], tmp})); } arg2.push_back(rz); rleqk = add_or(arg2); int A = add_and(vector<int> {lk, rleqk}); int B = add_and(vector<int> {rk, lleqk}); add_or(vector<int> {A, B}); }
#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...