Submission #170955

#TimeUsernameProblemLanguageResultExecution timeMemory
170955MvCVision Program (IOI19_vision)C++14
59 / 100
45 ms4724 KiB
#include "vision.h" #pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include <bits/stdc++.h> #define rc(x) return cout<<x<<endl,0 #define pb push_back #define mkp make_pair #define in insert #define er erase #define fd find #define fr first #define sc second typedef long long ll; typedef long double ld; const ll INF=0x3f3f3f3f3f3f3f3f; const ll llinf=(1LL<<62); const int inf=(1<<30); const int nmax=1e5+50; const int mod=1e9+7; using namespace std; int h,w,k,i,j,t,tp,a[250][250],x,y; vector<int>rd1,rd2,ld1,ld2,ndr,ndl,vc,vc1,fin; int anot(int x) { return add_not(x); } int aand(vector<int>x) { return add_and(x); } int axor(vector<int>x) { return add_xor(x); } int aor(vector<int>x) { return add_or(x); } void construct_network(int H,int W,int K) { h=H,w=W,k=K; for(i=0;i<h;i++)for(j=0;j<w;j++)a[i][j]=i*w+j; for(i=h-1;i>=0;i--) { vc.clear(); for(j=0,t=i;j<w && t<h;j++,t++)vc.pb(a[t][j]); rd1.pb(aor(vc)); x=aor(vc),y=axor(vc),y=anot(y); rd2.pb(aand(vector<int>{x,y})); } for(j=1;j<w;j++) { vc.clear(); for(i=0,t=j;i<h && t<w;i++,t++)vc.pb(a[i][t]); rd1.pb(aor(vc)); x=aor(vc),y=axor(vc),y=anot(y); rd2.pb(aand(vector<int>{x,y})); } for(i=h-1;i>=0;i--) { vc.clear(); for(j=w-1,t=i;t<h && j>=0;j--,t++)vc.pb(a[t][j]); ld1.pb(aor(vc)); x=aor(vc),y=axor(vc),y=anot(y); ld2.pb(aand(vector<int>{x,y})); } for(j=w-2;j>=0;j--) { vc.clear(); for(i=0,t=j;i<h && t>=0;i++,t--)vc.pb(a[i][t]); ld1.pb(aor(vc)); x=aor(vc),y=axor(vc),y=anot(y); ld2.pb(aand(vector<int>{x,y})); } for(tp=0;tp<2;tp++) { ndl.clear(),ndr.clear(); for(i=k;i<(int)rd1.size();i++) { vc.clear(),vc1.clear(); for(j=i;j>=i-k;j--) { vc.pb(rd1[j]); vc1.pb(rd2[j]); } x=aor(vc),y=axor(vc),y=anot(y),y=aand(vector<int>{x,y}),vc1.pb(y); ndr.pb(aor(vc1)); } for(i=k;i<(int)ld1.size();i++) { vc.clear(),vc1.clear(); for(j=i;j>=i-k;j--) { vc.pb(ld1[j]); vc1.pb(ld2[j]); } x=aor(vc),y=axor(vc),y=anot(y),y=aand(vector<int>{x,y}),vc1.pb(y); ndl.pb(aor(vc1)); } x=aor(ndr),y=aor(ndl),fin.pb(aand(vector<int>{x,y})); k--; } aand(vector<int>{fin[0],anot(fin[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...