이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "vision.h"
#ifndef EVAL
#include "grader.cpp"
#endif
#include <bits/stdc++.h>
using namespace std;
void construct_network(int n, int m, int K){
auto valid = [&](int i, int j) -> int {
return 0 <= i && i < n && 0 <= j && j < m;
};
auto idx = [&](int i, int j) -> int {
return i * m + j;
};
int N = n + m - 1;
vector<int> res1, res2;
auto solve = [&](int x1, int y1, int x2, int y2, int dx, int dy){
vector<int> a(N), b(N);
for (int i = 0; i < N; i++){
vector<int> qry;
for (int j = 0; j <= i; j++){
int xx = x1 + dx * j, yy = y1 + dy * (i - j);
if (valid(xx, yy))
qry.push_back(idx(xx, yy));
}
a[i] = add_or(qry);
}
for (int i = 0; i < N; i++){
vector<int> qry;
for (int j = 0; j <= i; j++){
int xx = x2 - dx * j, yy = y2 - dy * (i - j);
if (valid(xx, yy))
qry.push_back(idx(xx, yy));
}
b[i] = add_or(qry);
}
vector<int> pa(N), pb(N);
pa[0] = a[0], pb[0] = b[0];
for (int i = 1; i < N; i++)
pa[i] = add_or({pa[i - 1], a[i]});
for (int i = 1; i < N; i++)
pb[i] = add_or({pb[i - 1], b[i]});
vector<int> yes, no;
for (int i = 0; i < N; i++){
vector<int> qry;
if (i - K >= 0)
qry.push_back(a[i - K]);
if (i + K < N)
qry.push_back(b[N - 1 - (i + K)]);
if (qry.size())
yes.push_back(add_and({a[i], add_or(qry)}));
}
for (int i = 0; i < N; i++){
vector<int> qry;
if (i - (K + 1) >= 0)
qry.push_back(pa[i - (K + 1)]);
if (i + (K + 1) < N)
qry.push_back(pb[N - 1 - (i + (K + 1))]);
if (qry.size())
no.push_back(add_and({a[i], add_or(qry)}));
}
if (yes.size())
res1.push_back(add_or(yes));
if (no.size())
res2.push_back(add_or(no));
};
solve(0, 0, n - 1, m - 1, 1, 1);
solve(n - 1, 0, 0, m - 1, -1, 1);
if (res1.empty())
add_and({add_xor({0, 0})});
else if (res2.empty())
add_and({add_or(res1)});
else
add_and({add_or(res1), add_not(add_or(res2))});
}
# | 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... |