Submission #301002

#TimeUsernameProblemLanguageResultExecution timeMemory
301002MickyOrVision Program (IOI19_vision)C++17
0 / 100
67 ms6036 KiB
#include "vision.h" #include <bits/stdc++.h> #define fore(i, b, e) for (int i = b; i < (int)e; ++i) #define pb push_back using namespace std; typedef vector<int> vi; vector<vi> diagL(410), diagR(410); vi getRes(int H, int W, int k, vector<vi> &diag) { vi res, v, pref; fore(i, 0, H+W-1) { v.pb(add_or(diag[i])); pref.pb(add_or(v)); if (i > 0) { if (i > k) { int tmp = add_xor({pref[i-1], pref[i-k-1]}); res.pb( add_and({v.back(), tmp}) ); } else { res.pb( add_and({v.back(), pref[i-1]}) ); } } } return res; } int solve(int H, int W, int k) { vi resR, resL; resL = getRes(H, W, k, diagL); resR = getRes(H, W, k, diagR); int rL = add_or(resL); int rR = add_or(resR); return add_and({rL, rR}); } void construct_network(int H, int W, int K) { fore(i, 0, H) { fore(j, 0, W) { diagL[i+j].pb(i*W + j); diagR[i-j+W-1].pb(i*W + j); } } add_xor({solve(H, W, K), solve(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...