이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <vector>
#include "vision.h"
#include <iostream>
using namespace std;
struct picture
{
int H, W;
int dignr;
int ldb;
int rdb;
int getnr(int y, int x)
{
return y*W + x;
}
int inside(int y, int x)
{
return (y >= 0) && (x >= 0) && (x < W) && (y < H);
}
vector<int> leftdig;
vector<int> rightdig;
void init_dig()
{
vector<int> leftdig_double;
vector<int> rightdig_double;
for (int i = 0; i < dignr; i++)
{
vector<int> fields;
for (int j = 0; j < H; j++)
{
int x = i - j;
int y = j;
if (!inside(y, x)) continue;
fields.push_back(getnr(y, x));
}
int n_in = add_or(fields);
leftdig.push_back(n_in);
int xr = add_xor(fields);
leftdig_double.push_back(add_xor({n_in, xr}));
}
for (int i = W - dignr; i < W; i++)
{
vector<int> fields;
for (int j = 0; j < H; j++)
{
int x = i + j;
int y = j;
if (!inside(y, x)) continue;
fields.push_back(getnr(y, x));
}
int n_in = add_or(fields);
rightdig.push_back(n_in);
int xr = add_xor(fields);
rightdig_double.push_back(add_xor({n_in, xr}));
}
ldb = add_or(leftdig_double);
rdb = add_or(rightdig_double);
}
void init(int iH, int iW)
{
H = iH;
W = iW;
dignr = H + W - 1;
}
int smaller(int k)
{
k++;
vector<int> allld;
int curr = add_xor({0, 0});
for (int i = 0; i < dignr; i++)
{
if (i - k >= 0)
{
curr = add_xor({curr, leftdig[i - k]});
}
allld.push_back(add_and({curr, leftdig[i]}));
curr = add_xor({curr, leftdig[i]});
}
int inl = add_or({ldb, add_or(allld)});
allld.clear();
curr = add_xor({0, 0});
for (int i = 0; i < dignr; i++)
{
if (i - k >= 0)
{
curr = add_xor({curr, rightdig[i - k]});
}
allld.push_back(add_and({curr, rightdig[i]}));
curr = add_xor({curr, rightdig[i]});
}
int inr = add_or({rdb, add_or(allld)});
return add_and({inl, inr});
}
};
void construct_network(int H, int W, int K)
{
picture pic;
pic.init(H, W);
pic.init_dig();
add_xor({pic.smaller(K), pic.smaller(K - 1)});
}
# | 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... |