Submission #1165301

#TimeUsernameProblemLanguageResultExecution timeMemory
1165301AlgorithmWarriorVision Program (IOI19_vision)C++20
100 / 100
9 ms1728 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; int ind(int lin,int col,int W){ return lin*W+col; } vector<int>coord(int l1,int l2,int c1,int c2,int W){ vector<int>coor; int i,j; for(i=l1;i<=l2;++i) for(j=c1;j<=c2;++j) coor.push_back(ind(i,j,W)); return coor; } int nrbiti(int x){ int nrb=0; while(x){ x/=2; ++nrb; } return nrb; } int pos_unu; int pos_zero; vector<int>upgrade(vector<int>oldcount,int nr,int add){ int nrb=nrbiti(nr); vector<int>pref; vector<int>change; vector<int>counter; pref.push_back(pos_unu); int i; for(i=1;i<nrb;++i) pref.push_back(add_and({pref[i-1],oldcount[i-1]})); for(i=0;i<nrb;++i) change.push_back(add_and({add,pref[i]})); if(!(nr&(nr-1))) oldcount.push_back(pos_zero); for(i=0;i<nrb;++i) counter.push_back(add_xor({oldcount[i],change[i]})); return counter; } void construct_network(int H, int W, int K) { vector<int>interes; int i; interes.push_back(add_xor(coord(0,0,0,W-1,W))); for(i=1;i<H;++i){ vector<int>ask=coord(i,i,0,W-1,W); ask.push_back(interes.back()); interes.push_back(add_xor(ask)); } interes.push_back(add_xor(coord(0,H-1,0,0,W))); for(i=1;i<W;++i){ vector<int>ask=coord(0,H-1,i,i,W); ask.push_back(interes.back()); interes.push_back(add_xor(ask)); } pos_unu=add_or(interes); pos_zero=add_and(interes); vector<int>counter; counter.push_back(interes[0]); for(i=1;i<H+W;++i) counter=upgrade(counter,i+1,interes[i]); int nrb=nrbiti(H+W); for(i=0;i<nrb;++i) if(!(K&(1<<i))) counter[i]=add_not(counter[i]); add_and(counter); }
#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...