#include <bits/stdc++.h>
#include "vision.h"
using namespace std;
void construct_network(int H, int W, int K) {
auto id = [&](int i,int j){
return i*W+j;
};
auto dist = [](int i1,int i2,int j1,int j2){
return abs(i1-i2)+abs(j1-j2);
};
vector<int> row;
vector<int> col;
for(int i = 0;i < H;i++){
vector<int> cur;
for(int j = 0;j < W;j++){
cur.push_back(id(i,j));
}
row.push_back(add_or(cur));
}
for(int j = 0;j < W;j++){
vector<int> cur;
for(int i = 0;i < H;i++){
cur.push_back(id(i,j));
}
col.push_back(add_or(cur));
}
int sameRow = add_xor(row);
int sameCol = add_xor(col);
vector<int> nearRow;
for(int i = 0;i+1 < row.size();i++){
nearRow.push_back(add_and({row[i],row[i+1]}));
}
vector<int> nearCol;
for(int i = 0;i+1 < col.size();i++){
nearCol.push_back(add_and({col[i],col[i+1]}));
}
if(nearRow.empty()){// row len 1
int nearByCol = add_or(nearCol);
return;
}else if(nearCol.empty()){// col len 1
int nearByRow = add_or(nearRow);
return;
}
int nearByRow = add_or(nearRow);
int nearByCol = add_or(nearCol);
int a = add_and({sameRow,nearByCol});
int b = add_and({sameCol,nearByRow});
add_or({a,b});
}
# | 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... |