이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#include "vision.h"
using namespace std;
vector<int> DT(int H,int W,int i,int K){
vector<int> ans;
for(int j=i+K;j<H*W-K;j++){
if(abs(j%W-i%W)+abs(j/W-i/W)==K){
ans.push_back(j);
}
}
return ans;
}
void construct_network(int H, int W, int K){
vector<int> b;
b.push_back(0);
b.push_back(1);
if(H*W>2)
b.push_back(2);
int l=add_and(b);
b.pop_back();
b.pop_back();
if(b.size())
b.pop_back();
b.push_back(l);
if(H*W==2){
if(K==1)
return;
else
l=add_not(0);
return;
}
if(min(H,W)==1){
for(int i=0;i<H*W-K;i++){
vector<int> ans;
ans.push_back(i);
ans.push_back(i+K);
l=add_and(ans);
ans.pop_back();
ans.pop_back();
ans.push_back(l-1);
ans.push_back(l);
l=add_or(ans);
}
return;
}
if(max(H,W)<=100){
for(int i=0;i<H*W-K;i++){
vector<int> ans;
int h=(int)(DT(H,W,i,K).size()!=0);
if(h){
l=add_or(DT(H,W,i,K));
ans.push_back(l);
ans.push_back(i);
l=add_and(ans);
ans.pop_back();
ans.pop_back();
ans.push_back(l);
ans.push_back(l-2);
l=add_or(ans);
}
}
return;
}
else{
vector<int> ans;
for(int i=1;i<H*W;i++){
if((i%W)+(i/W)==K){
ans.push_back(i);
}
}
l=add_or(ans);
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... |