Submission #245524

#TimeUsernameProblemLanguageResultExecution timeMemory
245524vioalbertVision Program (IOI19_vision)C++14
100 / 100
75 ms7540 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; typedef long long ll; const int D = 405; int h, w; vector<int> diagL[D], diagR[D], prefL, prefR, ans; void reset() { prefL.clear(); prefR.clear(); ans.clear(); } int solve(int k) { reset(); for(int i = k; i <= h+w-2; i++) { prefL.push_back(add_or(diagL[i-k])); ans.push_back(add_and({add_or(prefL), add_or(diagL[i])})); prefR.push_back(add_or(diagR[i-k])); ans.push_back(add_and({add_or(prefR), add_or(diagR[i])})); } return add_or(ans); } void construct_network(int H, int W, int K) { h = H, w = W; for(int i = 0; i < h; i++) { for(int j = 0; j < w; j++) { diagL[i+j].push_back(i*w+j); diagR[i+(w-j-1)].push_back(i*w+j); } } if(H+W-2 == K) solve(K); else add_and({solve(K), add_not(solve(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...