제출 #146901

#제출 시각아이디문제언어결과실행 시간메모리
146901dennisstarVision Program (IOI19_vision)C++14
0 / 100
26 ms2804 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; typedef vector<int> vim; int chk[40010]; vim ans; int H, W; void f(int K) { vim Ns; vim x, y, z; int i, j; if (H+W-2<K) { for (i=0; i<H*W; i++) Ns.push_back(i); ans.push_back(add_xor(Ns)); return ; } for (i=0; i<H+W-1; i++) { Ns={}; for (j=max(0, i-W+1); j<H&&(i-j)<W; j++) Ns.push_back(W*j+(i-j)); x.push_back(add_or(Ns)); } for (i=-W+1; i<H; i++) { Ns={}; for (j=max(i, 0); j<H&&j-i<W; j++) Ns.push_back(j*(W+1)-i); y.push_back(add_or(Ns)); } Ns={}; for (i=K; i<H+W-1; i++) Ns.push_back(x[i]); int now=add_or(Ns); z.push_back(add_and({now, x[0]})); for (i=1; i<H+W-1; i++) { if (i+K-1<H+W-1)now=add_xor({now, x[i+K-1]}); if (i>=K) now=add_or({now, x[i-K]}); z.push_back(add_and({now, x[i]})); } Ns={}; for (i=K; i<H+W-1; i++) Ns.push_back(y[i]); now=add_or(Ns); z.push_back(add_and({now, y[0]})); for (i=1; i<H+W-1; i++) { if (i+K-1<H+W-1)now=add_xor({now, y[i+K-1]}); if (i>=K) now=add_or({now, y[i-K]}); z.push_back(add_and({now, y[i]})); } ans.push_back(add_or(z)); } void construct_network(int h, int w, int K) { H=h, W=w; f(K); f(K+1); ans[1]=add_not(ans[1]); add_and(ans); }
#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...