제출 #846261

#제출 시각아이디문제언어결과실행 시간메모리
846261abczzVision Program (IOI19_vision)C++14
100 / 100
18 ms2208 KiB
#include "vision.h" #include <iostream> #include <vector> #define ll int using namespace std; void construct_network(int H, int W, int K) { vector <ll> V, X; ll R[200], C[200], x, z; for (int i=0; i<H*W; ++i) V.push_back(i); x = add_or(V); z = add_not(x); for (int i=0; i<9; ++i) { if (K & (1LL<<i)) X.push_back(add_or({x, x})); else X.push_back(add_or({z, z})); } for (int i=0; i<H; ++i) { V.clear(); for (int j=0; j<W; ++j) { V.push_back(i*W+j); } R[i] = add_xor(V); if (i) R[i] = add_xor({R[i-1], R[i]}); } for (int j=0; j<W; ++j) { V.clear(); for (int i=0; i<H; ++i) { V.push_back(i*W+j); } C[j] = add_xor(V); if (j) C[j] = add_xor({C[j-1], C[j]}); } for (int i=0; i<H; ++i) { for (int k=0; k<9; ++k) { X[k] = add_xor({R[i], X[k]}); R[i] = add_and({R[i], X[k]}); } } for (int j=0; j<W; ++j) { for (int k=0; k<9; ++k) { X[k] = add_xor({C[j], X[k]}); C[j] = add_and({C[j], X[k]}); } } ll f = add_or(X); add_not(f); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...