Submission #1189449

#TimeUsernameProblemLanguageResultExecution timeMemory
1189449alexddVision Program (IOI19_vision)C++20
0 / 100
4 ms4740 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; void construct_network(int H, int W, int K) { K += 2; vector<int> linii,coloane; for(int lin=0;lin<H;lin++) { vector<int> v; for(int i=0;i<=lin;i++) for(int j=0;j<W;j++) v.push_back(i*W+j); int sus = add_or(v); v.clear(); for(int i=lin;i<H;i++) for(int j=0;j<W;j++) v.push_back(i*W+j); int jos = add_or(v); linii.push_back(add_and({sus,jos})); } for(int col=0;col<W;col++) { vector<int> v; for(int i=0;i<=col;i++) for(int j=0;j<H;j++) v.push_back(j*W+i); int st = add_or(v); v.clear(); for(int i=col;i<W;i++) for(int j=0;j<H;j++) v.push_back(j*W+i); int dr = add_or(v); coloane.push_back(add_and({st,dr})); } vector<int> rezs; for(int d=0;d<W;d++) { vector<int> newv; for(int i=0;i<2*(H+W);i++) { if(i < linii.size() && (i-d >= 0 && i-d < (int)coloane.size())) { newv.push_back(add_and({linii[i],coloane[i-d]})); } else if(i < linii.size()) { newv.push_back(linii[i]); } else if(i-d >= 0 && i-d < (int)coloane.size()) { newv.push_back(coloane[i-d]); } else { ///zero } } //assert((int)newv.size() >= K); while((int)newv.size() > K) newv.pop_back(); if(newv.size() == K) rezs.push_back(add_and(newv)); } assert(!rezs.empty()); add_and(rezs); } /* 2 3 3 0 0 1 2 1 0 0 2 0 0 1 1 -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...