Submission #778494

#TimeUsernameProblemLanguageResultExecution timeMemory
778494jasminVision Program (IOI19_vision)C++17
8 / 100
1 ms340 KiB
#include "vision.h" #include<bits/stdc++.h> using namespace std; int ind(int x, int y, int H, int W){ assert(0<=x && x<H && 0<=y && y<W); return x*W + y; } bool valid(int x, int y, int H, int W){ return (0<=x && x<H && 0<=y && y<W); } void construct_network_small(int H, int W, int K) { vector<int> ns_ans; int cnt=0; for(int x=0; x<H; x++){ for(int y=0; y<W; y++){ vector<int> ns; for(int i=0; i<=K; i++){ int x2=x+i; int y2=y-(K-i); if(valid(x2, y2, H, W)){ ns.push_back(ind(x2, y2, H, W)); } y2=y+(K-i); if(valid(x2, y2, H, W)){ ns.push_back(ind(x2, y2, H, W)); } } if(!ns.empty()){ add_or(ns); cnt++; add_and({ind(x, y, H, W), H*W + cnt-1}); cnt++; ns_ans.push_back(H*W + cnt-1); } } } add_or({ns_ans}); } void construct_network_zero(int H, int W, int K){ int x=0; int y=0; vector<int> ns; for(int i=0; i<=K; i++){ int x2=x+i; int y2=y-(K-i); if(valid(x2, y2, H, W)){ ns.push_back(ind(x2, y2, H, W)); } y2=y+(K-i); if(valid(x2, y2, H, W)){ ns.push_back(ind(x2, y2, H, W)); } } int i=add_or(ns); add_and({0, i}); } void construct_network(int H, int W, int K){ if(H*W<=1000){ construct_network_small(H, W, K); } construct_network_zero(H, W, K); }
#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...