이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> dl[405], dr[405];
int dgl[405], dgr[405], prl[405], prr[405];
int h, w;
int pos(int i, int j){
return i*w+j;
}
void construct_network(int n, int m, int k) {
h=n, w=m;
vector<int> vec1, vec2;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
dl[i+j].push_back(pos(i, j));
dr[i-j+m-1].push_back(pos(i, j));
}
}
for(int i=0;i<=n+m-2;i++){
dgl[i] = add_or(dl[i]);
dgr[i] = add_or(dr[i]);
if(i == 0){
prl[i] = add_or({dgl[i]});
prr[i] = add_or({dgr[i]});
}else {
prl[i] = add_or({prl[i-1], dgl[i]});
prr[i] = add_or({prr[i-1], dgr[i]});
}
if(i >= k){
vec1.push_back(add_and({dgl[i], prl[i-k]}));
vec1.push_back(add_and({dgr[i], prr[i-k]}));
}if(i >= k+1){
vec2.push_back(add_and({dgr[i], prl[i-k-1]}));
vec2.push_back(add_and({dgr[i], prr[i-k-1]}));
}
}if(k == n+m-2){
add_or(vec1);
}else {
add_xor({add_or(vec1), add_or(vec2)});
}
}
# | 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... |