이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "vision.h"
using namespace std;
int ZERO,ONE;
typedef vector<int> VI;
VI whatsdis(VI bits){
int n=bits.size();
VI res;
for(int i=0;i<8;i++){
VI pos;
for(int j=1;j<n;j++)
if(j>>i&1)
pos.push_back(j);
VI to_or;
for(int i=0;i<n;i++){
VI stuf;
for(auto k:pos)
if(k+i<n)
stuf.push_back(bits[k+i]);
if(stuf.size())
to_or.push_back(add_and({bits[i],add_or(stuf)}));
}
res.push_back(to_or.empty()?ZERO:add_or(to_or));
}
return res;
}
VI add_bits(VI A,VI B){
while(A.size()<8)
A.push_back(0);
while(B.size()<8)
B.push_back(0);
int CAR=ZERO;
VI res;
for(int i=0;i<8;i++){
res.push_back(add_xor({CAR,A[i],B[i]}));
CAR=add_or({add_and({A[i],B[i]}),add_and({A[i],CAR}),add_and({B[i],CAR})});
}
res.push_back(CAR);
return res;
}
void check_if_same(VI bits,int num){
VI finale;
for(int i=0;i<9;i++)
finale.push_back(add_xor({bits[i],num&1<<i?ZERO:ONE}));
add_and(finale);
}
void construct_network(int H, int W, int K) {
if(H*W==2) return void(add_and({0,1}));
ZERO=add_and({0,1,2});
ONE=add_not(ZERO);
vector<VI> rows(H),cols(W);
for(int i=0;i<H;i++)
for(int j=0;j<W;j++)
rows[i].push_back(i*W+j),
cols[j].push_back(i*W+j);
VI R,C;
for(int i=0;i<H;i++)
R.push_back(add_or(rows[i]));
for(int i=0;i<W;i++)
C.push_back(add_or(cols[i]));
VI bits1=whatsdis(C),bits2=whatsdis(R);
VI bits3=add_bits(bits1,bits2);
check_if_same(bits3,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... |