Submission #764146

#TimeUsernameProblemLanguageResultExecution timeMemory
764146alexander707070Vision Program (IOI19_vision)C++14
100 / 100
11 ms1876 KiB
#include<bits/stdc++.h> #include "vision.h" #define MAXN 507 using namespace std; int n,m,k,dist; vector<int> d[MAXN],e[MAXN]; int res[MAXN],ser[MAXN],suff[MAXN],suff2[MAXN]; vector<int> bad,good; void construct_network(int H, int W, int K){ n=H; m=W; k=K; for(int i=0;i<n;i++){ for(int f=0;f<m;f++){ d[i-f+m-1].push_back(i*m+f); e[i+f].push_back(i*m+f); } } for(int i=0;i<n+m-1;i++){ res[i]=add_or(d[i]); ser[i]=add_or(e[i]); } for(int i=n+m-2;i>=0;i--){ if(i==n+m-2)suff[i]=res[i]; else suff[i]=add_or({suff[i+1],res[i]}); if(i==n+m-2)suff2[i]=ser[i]; else suff2[i]=add_or({suff2[i+1],ser[i]}); } for(int i=0;i+k+1<n+m-1;i++){ bad.push_back(add_and({res[i],suff[i+k+1]})); bad.push_back(add_and({ser[i],suff2[i+k+1]})); } for(int i=0;i+k<n+m-1;i++){ good.push_back(add_and({res[i],res[i+k]})); good.push_back(add_and({ser[i],ser[i+k]})); } if(bad.empty()){ add_or(good); }else{ add_and({add_or(good) , add_not(add_or(bad)) }); } } /* int main(){ cout<<count_rectangles({{4, 8, 7, 5, 6}, {7, 4, 10, 3, 5}, {9, 7, 20, 14, 2}, {9, 14, 7, 3, 6}, {5, 7, 5, 2, 7}, {4, 5, 13, 5, 6}})<<"\n"; K=3 X . . O . . . O . . O . . . O . . X . . . O . . return 0; } */
#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...