이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 2e5 + 3e2;
vector<int> vv[MAXN];
map<int, vector<int>> left_diagonal, right_diagonal;
map<int, int> lf_or, lf_xor, rg_or, rg_xor;
int solve(int H, int W, int K){
vector<int> v1, v2, vec;
for (int i = 0; i < H; i++){
for (int j = 0; j < W; j++){
if (left_diagonal[i + j].front() != i * W + j) continue;
v1.clear(); v2.clear();
for (int x = 0; x < K; x++){
v1.push_back(lf_or[i + j - x]);
v2.push_back(lf_xor[i + j - x]);
}
int ind1 = add_or(v1), ind2 = add_xor(v2);
ind2 = add_not(ind2);
int ind = add_and({ind1, ind2});
vec.push_back(ind);
}
}
int lf = add_or(vec);
vec.clear();
for (int i = 0; i < H; i++){
for (int j = 0; j < W; j++){
if (right_diagonal[i - j].front() != i * W + j) continue;
v1.clear(); v2.clear();
for (int x = 0; x < K; x++){
v1.push_back(rg_or[i - j - x]);
v2.push_back(rg_xor[i - j - x]);
}
int ind1 = add_or(v1), ind2 = add_xor(v2);
ind2 = add_not(ind2);
int ind = add_and({ind1, ind2});
vec.push_back(ind);
}
}
int rg = add_or(vec);
return add_and({lf, rg});
}
void construct_network(int H, int W, int K) {
vector<int> Ns;
left_diagonal.clear();
right_diagonal.clear();
lf_or.clear();
lf_xor.clear();
rg_or.clear();
rg_xor.clear();
for (int i = 0; i < H; i++){
for (int j = 0; j < W; j++){
left_diagonal[i + j].push_back(i * W + j);
right_diagonal[i - j].push_back(i * W + j);
}
}
for (auto now : left_diagonal){
lf_or[now.first] = add_or(now.second);
lf_xor[now.first] = add_xor(now.second);
}
for (auto now : right_diagonal){
rg_or[now.first] = add_or(now.second);
rg_xor[now.first] = add_xor(now.second);
}
Ns = {solve(H, W, K + 1), solve(H, W, K)};
add_xor(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... |