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;
#define pii pair<int,int>
#define fs first
#define sc second
const int mxn = 404;
const int sh = mxn>>1;
int H,W,K;
int encode(int r,int c){
return r*W+c;
}
pii decode(int k){
return pii(k/W,k%W);
}
vector<int> v[mxn];
int arr[mxn];
void construct_network(int HH, int WW, int KK) {
H = HH,W = WW,K = KK;
int zero = add_xor({0,0});
int ans = zero;
for(int i = 0;i<H;i++){
for(int j = 0;j<W;j++){
v[i+j].push_back(encode(i,j));
}
}
for(int i = 0;i<mxn;i++){
if(!v[i].empty()){
arr[i] = add_or(v[i]);
}
}
for(int i = 0;i<H+W;i++){
if(v[i+K].empty()||v[i].empty())continue;
ans = add_or({ans,add_and({arr[i],arr[i+K]})});
}
for(auto &i:v)i.clear();
for(int i = 0;i<H;i++){
for(int j = 0;j<W;j++){
v[sh+i-j].push_back(encode(i,j));
}
}
for(int i = 0;i<mxn;i++){
if(!v[i].empty())arr[i] = add_or(v[i]);
}
for(int i = 0;i<mxn;i++){
if(v[i].empty()||v[i+K].empty())continue;
ans = add_or({ans,add_and({arr[i],arr[i+K]})});
}
return;
}
# | 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... |