이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "vision.h"
#include<algorithm>
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int dist(int x, int y, int i, int j) {
return abs(x - i) + abs(y - j);
}
void construct_network(int H, int W, int K) {
vector<int>res;
vector<int>xrow(H), xcol(W);
for (int i = 0 ; i < H ; ++ i) {
vector<int>cur;
for (int j = 0 ; j < W ; ++ j) {
cur.emplace_back(i * W + j);
}
xrow[i] = add_xor(cur);
}
for (int j = 0 ; j < W ; ++ j) {
vector<int>cur;
for (int i = 0 ; i < H ; ++ i) {
cur.emplace_back(i * W + j);
}
xcol[j] = add_xor(cur);
}
vector<int>temp;
for (int i = 0 ; i < H ; ++ i) temp.emplace_back(xrow[i]);
int zrow = add_or(temp);
zrow = add_not(zrow);
temp.clear();
for (int i = 0 ; i < W ; ++ i) temp.emplace_back(xcol[i]);
int zcol = add_or(temp);
zcol = add_not(zcol);
for (int i = 1 ; i < H ; ++ i) {
int a = xrow[i - 1];
int b = xrow[i];
int c = zcol;
res.emplace_back(add_and({a, b, c}));
}
for (int i = 1 ; i < W ; ++ i) {
int a = xcol[i - 1];
int b = xcol[i];
int c = zrow;
res.emplace_back(add_and({a, b, c}));
}
add_or(res);
}
# | 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... |