이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "vision.h"
#include <bits/stdc++.h>
#define FOR(i,p,k) for(int i=(p);i<=(k);++i)
#define REP(i,n) FOR(i,0,(n)-1)
#define ssize(x) (int((x).size()))
#define all(x) (x).begin(),(x).end()
using namespace std;
void construct_network(int h, int w, int k){
if(max(h, w) <= 10 || min(h, w) == 1){
vector<int> vec;
REP(i, h) REP(j, w) REP(x, h) REP(y, w){
if(abs(i-x)+abs(j-y) == k){
int t = add_and({i*w+j, x*w+y});
vec.emplace_back(t);
}
}
add_or(vec);
return;
}
if(k == 1){
vector<int> poziomo(h);
REP(i, h){
vector<int> vec;
REP(j, w) vec.emplace_back(i*w+j);
poziomo[i] = add_xor(vec);
}
vector<int> pionowo(w);
REP(j, w){
vector<int> vec;
REP(i, h) vec.emplace_back(i*w+j);
pionowo[j] = add_xor(vec);
}
auto nic = [&](vector<int> vec){
return add_not(add_or(vec));
};
auto sasiednie = [&](vector<int> vec){
vector<int> xd;
REP(i, ssize(vec)-1) xd.emplace_back(add_and({vec[i], vec[i+1]}));
if(xd.empty()) xd.emplace_back(vec[0]);
return add_or(xd);
};
int a = add_and({nic(pionowo), sasiednie(poziomo)});
int b = add_and({sasiednie(pionowo), nic(poziomo)});
add_or({a, b});
return;
}
vector<int> vec;
REP(x, h) REP(y, w){
if(x+y == k){
int t = add_and({0, x*w+y});
vec.emplace_back(t);
}
}
add_or(vec);
}
# | 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... |