이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
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 transformCoords(int W, int i, int j) {
return i*W+j;
}
bool isValid(int H, int W, int i, int j) {
if (i < 0 || j < 0 || i >= H || j >= W) return false;
return true;
}
void construct_network(int H, int W, int K) {
vector<int> Ns;
int idx = 0;
for (int x = 0; x < H; x++) {
for (int y = 0; y < W; y++) {
vector<int> arr;
for (int i = 0; i <= K; i++) {
if (isValid(H, W, i+x, K-i+y)) {
arr.pb(transformCoords(W, i+x, K-i+y));
}
if (isValid(H, W, x-i, K-i+y) && x-i != i+x) {
arr.pb(transformCoords(W, x-i, K-i+y));
}
}
if (arr.size()) {
add_or({transformCoords(W, x, y)});
add_or(arr);
idx += 2;
}
}
}
// for (int i = 0; i < Ns.size(); i++) {
// cout << Ns[i] << " x ";
// }
// cout << endl;
for (int i = 0; i < idx; i+=2) {
Ns.pb(add_and({H*W+i, H*W+i+1}));
}
add_or(Ns);
}
# | 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... |