This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "vision.h"
#include<bits/stdc++.h>
using namespace std;
int ind(int x, int y, int H, int W){
assert(0<=x && x<H && 0<=y && y<W);
return x*W + y;
}
bool valid(int x, int y, int H, int W){
return (0<=x && x<H && 0<=y && y<W);
}
void construct_network_small(int H, int W, int K) {
vector<int> ns_ans;
int cnt=0;
for(int x=0; x<H; x++){
for(int y=0; y<W; y++){
vector<int> ns;
for(int i=0; i<=K; i++){
int x2=x+i;
int y2=y-(K-i);
if(valid(x2, y2, H, W)){
ns.push_back(ind(x2, y2, H, W));
}
y2=y+(K-i);
if(valid(x2, y2, H, W)){
ns.push_back(ind(x2, y2, H, W));
}
}
if(!ns.empty()){
add_or(ns); cnt++;
add_and({ind(x, y, H, W), H*W + cnt-1}); cnt++;
ns_ans.push_back(H*W + cnt-1);
}
}
}
add_or({ns_ans});
}
void construct_network_zero(int H, int W, int K){
int x=0; int y=0;
vector<int> ns;
for(int i=0; i<=K; i++){
int x2=x+i;
int y2=y-(K-i);
if(valid(x2, y2, H, W)){
ns.push_back(ind(x2, y2, H, W));
}
y2=y+(K-i);
if(valid(x2, y2, H, W)){
ns.push_back(ind(x2, y2, H, W));
}
}
int i=add_or(ns);
add_and({0, i});
}
void construct_network1(int H, int W, int K){
//same line
vector<int> ns_xor;
for(int i=0; i<H; i++){
vector<int> ns;
for(int j=0; j<W; j++){
ns.push_back(i*W + j);
}
int x = add_or(ns);
ns_xor.push_back(x);
}
int sameline = add_xor(ns_xor);
//neighbours
vector<int> ind(W);
for(int i=0; i<W; i++){
vector<int> ns;
for(int j=0; j<H; j++){
ns.push_back(j*W + i);
}
ind[i] = add_or(ns);
}
vector<int> ns_or;
for(int i=0; i+1<W; i++){
ns_or.push_back(add_and({ind[i], ind[i+1]}));
}
int neighbours=add_or(ns_or);
//answer
add_and({sameline, neighbours});
}
void construct_network(int H, int W, int K){
if(H*W<=1000){
construct_network_small(H, W, K);
return;
}
if(K==1){
construct_network1(H, W, K);
return;
}
construct_network_zero(H, W, K);
}
# | 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... |