Submission #392323

#TimeUsernameProblemLanguageResultExecution timeMemory
392323AntekbVision Program (IOI19_vision)C++14
100 / 100
18 ms1808 KiB
#include "vision.h" using namespace std; #define pb(x) push_back(x) vector<int> V; int n, tru; int L=10; void add(int k){ int p=k; for(int i=0;i<L; i++){ int q=p; q=add_and({q, V[i]}); V[i]=add_xor({p, V[i]}); p=q; } } void construct_network(int H, int W, int K) { vector<int> Ns; n=add_xor({0, 0}); tru=add_not(n); V.resize(L, n); int col[H], row[W]; for(int i=0; i<H; i++){ Ns.clear(); for(int j=0; j<W; j++){ Ns.pb(i*W+j); } col[i]=add_xor(Ns); } int pref[H+1], suf[H+1]; pref[0]=n; for(int i=0; i<H; i++){ pref[i+1]=add_xor({pref[i], col[i]}); } suf[H]=n; for(int i=H-1; i>=0; i--){ suf[i]=add_xor({suf[i+1], col[i]}); } for(int i=0; i<=H; i++){ int k=add_and({pref[i], suf[i]}); add(k); } for(int j=0; j<W; j++){ Ns.clear(); for(int i=0; i<H; i++){ Ns.pb(i*W+j); } row[j]=add_xor(Ns); } int pref2[W+1], suf2[W+1]; pref2[0]=n; for(int i=0; i<W; i++){ pref2[i+1]=add_xor({pref2[i], row[i]}); } suf2[W]=n; for(int i=W-1; i>=0; i--){ suf2[i]=add_xor({suf2[i+1], row[i]}); //cerr<<i<<"\n"; } for(int i=0; i<=W; i++){ int k=add_and({pref2[i], suf2[i]}); add(k); } Ns.clear(); for(int i=0; i<L; i++){ if(K&(1<<i))Ns.pb(V[i]); else Ns.pb(add_not(V[i])); } add_and(Ns); }
#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...