Submission #291782

#TimeUsernameProblemLanguageResultExecution timeMemory
291782medmdgVision Program (IOI19_vision)C++14
66 / 100
442 ms2204 KiB
#include<bits/stdc++.h> #include "vision.h" using namespace std; vector<int> DT(int H,int W,int i,int K){ vector<int> ans; for(int j=0;j<H*W;j++){ if(abs(j%W-i%W)+abs(j/W-i/W)==K){ ans.push_back(j); } } return ans; } void construct_network(int H, int W, int K){ vector<int> b; b.push_back(0); b.push_back(1); if(H*W>2) b.push_back(2); int l=add_and(b); b.pop_back(); b.pop_back(); if(b.size()) b.pop_back(); b.push_back(l); if(H*W==2){ if(K==1) return; else l=add_not(0); return; } if(min(H,W)==1){ for(int i=0;i<H*W-K;i++){ vector<int> ans; ans.push_back(i); ans.push_back(i+K); l=add_and(ans); ans.pop_back(); ans.pop_back(); ans.push_back(l-1); ans.push_back(l); l=add_or(ans); } return; } if(K==1){ int be,en; be=l+1; for(int i=0;i<H;i++){ vector<int> ans; for(int j=0;j<W;j++){ ans.push_back(j+i*W); } en=add_or(ans); } int b,e; b=en+1; for(int i=0;i<W;i++){ vector<int> ans; for(int j=i;j<W*H;j+=W){ ans.push_back(j); } e=add_or(ans); } int poss0H; vector<int> rea; for(int i=be;i<=en;i++){ rea.push_back(i); } poss0H=add_xor(rea); int poss1H; vector<int> jgf; for(int i=be;i<en;i++){ vector<int> re; re.push_back(i); re.push_back(i+1); jgf.push_back(add_and(re)); } poss1H=add_or(jgf); int poss0W; vector<int> ria; for(int i=b;i<=e;i++){ ria.push_back(i); } poss0W=add_xor(ria); int poss1W; vector<int> jf; for(int i=b;i<e;i++){ vector<int> re; re.push_back(i); re.push_back(i+1); jf.push_back(add_and(re)); } poss1W=add_or(jf); vector<int> nb; nb.push_back(poss0W); nb.push_back(poss1H); e=add_and(nb); nb[0]=poss1W; nb[1]=poss0H; b=add_and(nb); nb[0]=e; nb[1]=b; en=add_or(nb); return; } if(max(H,W)<=100){ for(int i=0;i<H*W-K;i++){ vector<int> ans; int h=(int)(DT(H,W,i,K).size()!=0); if(h){ l=add_or(DT(H,W,i,K)); ans.push_back(l); ans.push_back(i); l=add_and(ans); ans.pop_back(); ans.pop_back(); ans.push_back(l); ans.push_back(l-2); l=add_or(ans); } } return; } else{ vector<int> ans; for(int i=1;i<H*W;i++){ if((i%W)+(i/W)==K){ ans.push_back(i); } } l=add_or(ans); return; } }

Compilation message (stderr)

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:88:22: warning: 'e' may be used uninitialized in this function [-Wmaybe-uninitialized]
   88 |         for(int i=b;i<e;i++){
      |                     ~^~
vision.cpp:73:23: warning: 'en' may be used uninitialized in this function [-Wmaybe-uninitialized]
   73 |         for(int i=be;i<en;i++){
      |                      ~^~~
#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...