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 <vector>
#include <string>
using namespace std;
int add_and(std::vector<int> Ns);
int add_or(std::vector<int> Ns);
int add_xor(std::vector<int> Ns);
int add_not(int N);
bool vis[202][202];
int k,h,w;
int f(int i,int j)
{
return (i*w)+j;
}
vector<int> val;
void dfs(int i,int j)
{
// cout<<"At "<<i<<' '<<j<<endl;
vis[i][j]=1;
for(int fp=-k;fp<=k;fp++)
{
int rem=k-abs(fp);
if(0<=(i+fp) and (i+fp)<h and 0<=(j+rem) and (j+rem)<w and !vis[i+fp][j+rem])
{
val.push_back(add_and({f(i,j),f(i+fp,j+rem)}));
dfs(i+fp,j+rem);
}
rem*=-1;
if(0<=(i+fp) and (i+fp)<h and 0<=(j+rem) and (j+rem)<w and !vis[i+fp][j+rem])
{
val.push_back(add_and({f(i,j),f(i+fp,j+rem)}));
dfs(i+fp,j+rem);
}
}
}
void construct_network(int H, int W, int K)
{
k=K;
h=H;
w=W;
for(int i=0;i<H;i++)
{
for(int j=0;j<W;j++)
{
if(!vis[i][j])
{
dfs(i,j);
}
}
}
add_or(val);
}
# | 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... |