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>
void construct_network(int H, int W, int K);
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);
int tiles[505][505];
void plotar_tiles(int H,int W){
for(int i=0;i!=H;++i){
for(int j=0;j!=W;++j){
tiles[i][j]=(i*W)+j;
}
}
}
///Ideia: Caso o AND desses 2 caras sejam positivos a conexao eh invalida
std::vector<int> gerar_lista_dist(int H,int W,int a,int b,int K){
std::vector<int> queue;
queue.push_back(tiles[a][b]);
for(int i=0;i!=H;++i){
for(int j=0;j!=W;++j){
int d = abs(i-a)+abs(j-b);
if(d!=K)queue.push_back(tiles[i][j]);
}
}
return queue;
}
void construct_network(int H, int W, int K) {
plotar_tiles(H,W);
///Min(H,W) == 1
if(std::min(H,W)==1){
if(H==1){
int count=0;
for(int i=0;i!=W;++i){
int esperado = i+K;
if(esperado>=W)break;
std::vector<int> v;
v.push_back(tiles[0][i]);
v.push_back(tiles[0][esperado]);
add_and(v);
++count;
}
std::vector<int> orzao;
for(int i=0;i!=count;++i)orzao.push_back(H*W+i);
add_or(orzao);
}else {
assert(W==1);
int count=0;
for(int i=0;i!=H;++i){
int esperado = i+K;
if(esperado>=H)break;
std::vector<int> v;
v.push_back(tiles[i][0]);
v.push_back(tiles[esperado][0]);
add_and(v);
++count;
}
std::vector<int> orzao;
for(int i=0;i!=count;++i)orzao.push_back(H*W+i);
add_or(orzao);
}
}else if(H*W<=10000-5){
int count=0;
for(int i=0;i!=H;++i){
for(int j=0;j!=W;++j){
if(i==H-1&&j==W-1)continue;
std::vector<int> res = gerar_lista_dist(H,W,i,j,K);
add_and(res);
++count;
}
}
std::vector<int> orzao;
for(int i=0;i!=count;++i)orzao.push_back(H*W+i);
add_or(orzao);
add_not(H*W+count);
}{///Pixel no canto superior esquerdo
std::vector<int> lista;
for(int i=0;i!=H;++i)
for(int j=0;j!=W;++j){
if(i+j==K){
lista.push_back(tiles[i][j]);
}
}
add_or(lista);
}
}
# | 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... |