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<bits/stdc++.h>
#include "vision.h"
using namespace std;
int n,m,k;
int Zero,Jeden,temp;
vector<int>A,An,A1,A2;
vector<int>B,Bn,B1,B2;
vector<int>P;
vector<int>V[4];
int Num(int y, int x)
{
return y*m+x;
}
bool Bit(int x, int u)
{
return (x>>u)%2;
}
vector<int>Add(vector<int>A,vector<int>B)
{
const int siz=(int)A.size();
int ziom=Zero;
vector<int>W;
for(int i=0;i<siz;i++)
{
int a=A[i],b=B[i],c=ziom;
int xorr=add_xor({a,b,c});
int andd=add_and({a,b,c});
int orr=add_or({a,b,c});
int Nxorr=add_not(xorr);
int u1=andd,u2=add_and({orr,Nxorr});
W.push_back(xorr);
ziom=add_or({u1,u2});
}
return W;
}
void construct_network(int N, int M, int K)
{
n=N;
m=M;
k=K;
for(int i=0;i<n;i++)
{
P.clear();
for(int j=0;j<m;j++)
{
P.push_back(Num(i,j));
}
A.push_back(add_or(P));
}
for(int i=0;i<m;i++)
{
P.clear();
for(int j=0;j<n;j++)
{
P.push_back(Num(j,i));
}
B.push_back(add_or(P));
}
temp=add_not(0);
Jeden=add_or({0,temp});
Zero=add_and({0,temp});
An.resize(A.size());
A1.resize(A.size());
A2.resize(A.size());
Bn.resize(B.size());
B1.resize(B.size());
B2.resize(B.size());
for(int i=0;i<(int)A.size();i++)
{
An[i]=add_not(A[i]);
}
for(int i=0;i<(int)B.size();i++)
{
Bn[i]=add_not(B[i]);
}
P.clear();
for(int i=0;i<(int)A.size();i++)
{
P.push_back(A[i]);
A1[i]=add_and(P);
P.pop_back();
P.push_back(An[i]);
}
P.clear();
for(int i=(int)A.size()-1;i>=0;i--)
{
P.push_back(A[i]);
A2[i]=add_and(P);
P.pop_back();
P.push_back(An[i]);
}
P.clear();
for(int i=0;i<(int)B.size();i++)
{
P.push_back(B[i]);
B1[i]=add_and(P);
P.pop_back();
P.push_back(Bn[i]);
}
P.clear();
for(int i=(int)B.size()-1;i>=0;i--)
{
P.push_back(B[i]);
B2[i]=add_and(P);
P.pop_back();
P.push_back(Bn[i]);
}
for(int i=0;i<4;i++)
{
V[i].resize(10);
}
for(int i=0;i<10;i++)
{
P.clear();
for(int j=0;j<n;j++)
{
if(Bit(j,i)==0){continue;}
P.push_back(A1[j]);
}
if((int)P.size()==0){V[0][i]=Jeden;}
else
{
temp=add_or(P);
V[0][i]=add_not(temp);
}
P.clear();
for(int j=0;j<n;j++)
{
if(Bit(j,i)==0){continue;}
P.push_back(A2[j]);
}
if((int)P.size()==0){V[1][i]=Zero;}
else
{
V[1][i]=add_or(P);
}
P.clear();
for(int j=0;j<m;j++)
{
if(Bit(j,i)==0){continue;}
P.push_back(B1[j]);
}
if((int)P.size()==0){V[2][i]=Jeden;}
else
{
temp=add_or(P);
V[2][i]=add_not(temp);
}
P.clear();
for(int j=0;j<m;j++)
{
if(Bit(j,i)==0){continue;}
P.push_back(B2[j]);
}
if((int)P.size()==0){V[3][i]=Zero;}
else
{
V[3][i]=add_or(P);
}
}
V[0]=Add(V[0],V[1]);
V[0]=Add(V[0],V[2]);
V[0]=Add(V[0],V[3]);
k=(k-2+1024)%1024;
P.clear();
for(int i=0;i<10;i++)
{
if(Bit(k,i)){P.push_back(V[0][i]);}
else{P.push_back(add_not(V[0][i]));}
}
add_and(P);
}
# | 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... |