Submission #478396

#TimeUsernameProblemLanguageResultExecution timeMemory
478396blueVision Program (IOI19_vision)C++17
100 / 100
71 ms5836 KiB
#include "vision.h" #include <vector> #include <iostream> using namespace std; int check(int H, int W, int K) //check if dist <= K { vector<int> main_list[450]; vector<int> opp_list[450]; for(int i = 0; i < H*W; i++) { main_list[i/W + int(i%W)].push_back(i); opp_list[i/W - int(i%W) + W-1].push_back(i); } vector<int> main_curr, main_prev, opp_curr, opp_prev; vector<int> res; for(int d = 0; d <= H+W-2; d++) { //main main_curr.push_back(add_or(main_list[d])); main_prev.push_back(add_or(main_curr)); if(d-K >= 0) res.push_back(add_and({main_curr[d], main_prev[d-K]})); opp_curr.push_back(add_or(opp_list[d])); opp_prev.push_back(add_or(opp_curr)); if(d-K >= 0) res.push_back(add_and({opp_curr[d], opp_prev[d-K]})); } return add_or(res); } void construct_network(int H, int W, int K) { if(K == H+W-2) check(H, W, K); else add_xor({check(H, W, K), check(H, W, K+1)}); }
#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...