Submission #1216751

#TimeUsernameProblemLanguageResultExecution timeMemory
1216751loiiii12358Vision Program (IOI19_vision)C++20
73 / 100
27 ms4484 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; void construct_network(int H, int W, int K) { int zero,one; vector<int> cur,vec,hd[8],realhd(8),wd[8],realwd(8),add(9),result(9),ans; cur.clear(); for(int i=0;i<H;i++){ for(int j=0;j<W;j++){ cur.push_back(i*W+j); } } zero=add_xor(cur); one=add_not(zero); vec.clear(); for(int i=0;i<H;i++){ cur.clear(); for(int j=0;j<W;j++){ cur.push_back(i*W+j); } vec.push_back(add_or(cur)); } for(int i=0;i<H;i++){ for(int j=0;j<8;j++){ cur.clear(); for(int k=0;k<H;k++){ if(abs(k-i)&(1<<j)){ cur.push_back(vec[k]); } } if(!cur.empty()){ hd[j].push_back(add_and({vec[i],add_or(cur)})); } } } for(int i=0;i<8;i++){ if(hd[i].empty()){ realhd[i]=zero; }else{ realhd[i]=add_or(hd[i]); } } vec.clear(); for(int i=0;i<W;i++){ cur.clear(); for(int j=0;j<H;j++){ cur.push_back(j*W+i); } vec.push_back(add_or(cur)); } for(int i=0;i<W;i++){ for(int j=0;j<8;j++){ cur.clear(); for(int k=0;k<W;k++){ if(abs(k-i)&(1<<j)){ cur.push_back(vec[k]); } } if(!cur.empty()){ wd[j].push_back(add_and({vec[i],add_or(cur)})); } } } for(int i=0;i<8;i++){ if(wd[i].empty()){ realwd[i]=zero; }else{ realwd[i]=add_or(wd[i]); } } add[0]=zero; for(int i=0;i<8;i++){ result[i]=add_xor({add[i],realhd[i],realwd[i]}); add[i+1]=add_or({add_and({realhd[i],realwd[i]}),add_and({add[i],realwd[i]}),add_and({realhd[i],add[i]})}); } result[8]=add[8]; for(int i=0;i<8;i++){ if(K&(1<<i)){ ans.push_back(add_not(add_xor({one,result[i]}))); }else{ ans.push_back(add_not(add_xor({zero,result[i]}))); } } ans.push_back(add_not(result[8])); add_and(ans); }
#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...