This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |