Submission #144269

#TimeUsernameProblemLanguageResultExecution timeMemory
144269TadijaSebezVision Program (IOI19_vision)C++14
100 / 100
38 ms3704 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; #define pb push_back const int N=405; int n,m,k; int d1[N],d2[N],x1[N],x2[N]; int Get(int x, int y){ return (x-1)*m+y-1;} int Get(pair<int,int> p){ return Get(p.first,p.second);} bool Valid(int x, int y){ return x>=1 && x<=n && y>=1 && y<=m;} bool Valid(pair<int,int> p){ return Valid(p.first,p.second);} void construct_network(int H, int W, int K) { n=H;m=W;k=K; pair<int,int> fir={1,m}; int l1=0,l2=0; while(++l1) { vector<int> diag; pair<int,int> cur=fir; do { diag.pb(Get(cur)); cur.first++; cur.second++; }while(Valid(cur)); d1[l1]=add_or(diag); x1[l1]=add_not(add_xor(diag)); if(fir.second==1) fir.first++; else fir.second--; if(!Valid(fir)) break; } fir={n,m}; while(++l2) { vector<int> diag; pair<int,int> cur=fir; do { diag.pb(Get(cur)); cur.first++; cur.second--; }while(Valid(cur)); d2[l2]=add_or(diag); x2[l2]=add_not(add_xor(diag)); if(fir.first==1) fir.second--; else fir.first--; if(!Valid(fir)) break; } vector<int> _or; for(int i=1;i+k<=l1;i++) _or.pb(add_and({d1[i],d1[i+k]})); int eq=add_or(_or); _or.clear(); for(int i=1;i<=l2;i++) { vector<int> tmp; for(int j=i+1;j<=min(i+k,l2);j++) tmp.pb(d2[j]); tmp.pb(x2[i]); _or.pb(add_and({d2[i],add_or(tmp)})); } int le=add_or(_or); int f=add_and({eq,le}); _or.clear(); for(int i=1;i+k<=l2;i++) _or.pb(add_and({d2[i],d2[i+k]})); eq=add_or(_or); _or.clear(); for(int i=1;i<=l1;i++) { vector<int> tmp; for(int j=i+1;j<=min(i+k,l1);j++) tmp.pb(d1[j]); tmp.pb(x1[i]); _or.pb(add_and({d1[i],add_or(tmp)})); } le=add_or(_or); int s=add_and({eq,le}); add_or({f,s}); }
#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...