이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "vision.h"
using namespace std;
#define pb(x) push_back(x)
vector<int> V;
int n, tru;
int L=10;
void add(int k){
int p=k;
for(int i=0;i<L; i++){
int q=p;
q=add_and({q, V[i]});
V[i]=add_xor({p, V[i]});
p=q;
}
}
void construct_network(int H, int W, int K) {
vector<int> Ns;
n=add_xor({0, 0});
tru=add_not(n);
V.resize(L, n);
int col[H], row[W];
for(int i=0; i<H; i++){
Ns.clear();
for(int j=0; j<W; j++){
Ns.pb(i*W+j);
}
col[i]=add_xor(Ns);
}
int pref[H+1], suf[H+1];
pref[0]=n;
for(int i=0; i<H; i++){
pref[i+1]=add_xor({pref[i], col[i]});
}
suf[H]=n;
for(int i=H-1; i>=0; i--){
suf[i]=add_xor({suf[i+1], col[i]});
}
for(int i=0; i<=H; i++){
int k=add_and({pref[i], suf[i]});
add(k);
}
for(int j=0; j<W; j++){
Ns.clear();
for(int i=0; i<H; i++){
Ns.pb(i*W+j);
}
row[j]=add_xor(Ns);
}
int pref2[W+1], suf2[W+1];
pref2[0]=n;
for(int i=0; i<W; i++){
pref2[i+1]=add_xor({pref2[i], row[i]});
}
suf2[W]=n;
for(int i=W-1; i>=0; i--){
suf2[i]=add_xor({suf2[i+1], row[i]});
//cerr<<i<<"\n";
}
for(int i=0; i<=W; i++){
int k=add_and({pref2[i], suf2[i]});
add(k);
}
Ns.clear();
for(int i=0; i<L; i++){
if(K&(1<<i))Ns.pb(V[i]);
else Ns.pb(add_not(V[i]));
}
add_and(Ns);
}
# | 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... |