Submission #431165

#TimeUsernameProblemLanguageResultExecution timeMemory
431165CSQ31Vision Program (IOI19_vision)C++17
33 / 100
12 ms1148 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; int dx[4] = {1,1,-1,-1}; int dy[4] = {-1,1,1,-1}; void construct_network(int H, int W, int K) { if(max(H,W) <= 10 || min(H,W) == 1){ vector<int>fin; int cnt = H*W; for(int i=0;i<H;i++){ for(int j=0;j<W;j++){ for(int k=0;k<=K;k++){ for(int q=0;q<4;q++){ int x = i+dx[q]*k; int y = j+dy[q]*(K-k); if(x>=0 && y>=0 && x<H && y<W){ if(x*W+y > i*W+j){ add_and({x*W +y,i*W+j}); fin.push_back(cnt++); } } } } } } add_or(fin); return; } if(K==1){ int cnt = H*W-1; for(int i=0;i<H;i++){ vector<int>v; for(int j=0;j<W;j++){ v.push_back(i*W+j); } add_xor(v); cnt++; } //first W are row xor //H+w are col xor for(int i=0;i<W;i++){ vector<int>v; for(int j=0;j<H;j++){ v.push_back(j*W+H); } add_xor(v); cnt++; } //H*W -> H*w+H-1; //H*W+H ->H*W+H+W-1; vector<int>rnot,rgap; vector<int>cnot,cgap; for(int i=0;i<H;i++){ add_not(H*W+i); rnot.push_back(++cnt); } for(int j=0;j<W;j++){ add_not(H*W+H+j); cnot.push_back(++cnt); } for(int i=0;i<H;i++){ if(i){ add_and({H*W+i,H*W+i-1}); rgap.push_back(++cnt); } } for(int i=0;i<W;i++){ if(i){ add_and({H*W+H+i,H*W+H+i-1}); cgap.push_back(++cnt); } } int a=cnt++; int b=cnt++; int c=cnt++; int d=cnt++; add_and(rnot); add_and(cnot); add_or(rgap); add_or(cgap); add_and({a,d}); add_and({b,c}); cnt++; cnt++; add_or({cnt,cnt-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...