제출 #198765

#제출 시각아이디문제언어결과실행 시간메모리
198765AkashiVision Program (IOI19_vision)C++14
44 / 100
21 ms3136 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; bool viz[205][205]; int wh[205][205]; int Last, H, W, K; void do_it(int i, int j){ if(viz[i][j]) return ; vector <int> v; viz[i][j] = 1; for(int x = -K; x <= K ; ++x){ int y = K - abs(x); int l = i + x, c = j + y; if(l >= 0 && c >= 0 && l < H && c < W){ if(!viz[l][c]) v.push_back(l * W + c); } y = -y; l = i + x, c = j + y; if(l >= 0 && c >= 0 && l < H && c < W){ if(!viz[l][c]) v.push_back(l * W + c); } } if(v.size() == 0) return ; wh[i][j] = add_or(v); Last = wh[i][j]; } void construct_network(int n, int m, int k) { H = n; W = m; K = k; int mi = H / 2, mj = W / 2; for(int d = 0; d <= max(H, W) ; ++d){ for(int i = max(0, mi - d); i <= max(H - 1, mi + d) ; ++i){ if(mj - d >= 0) do_it(i, mj - d); if(mj + d < W) do_it(i, mj + d); } for(int j = max(0, mj - d); j <= max(W - 1, mj + d) ; ++j){ if(mi - d >= 0) do_it(mi - d, j); if(mi + d < H) do_it(mi + d, j); } } int st = Last + 1, dr = 0; for(int i = 0; i < H ; ++i){ for(int j = 0; j < W ; ++j){ if(wh[i][j]){ vector <int> v; v.push_back(i * W + j); v.push_back(wh[i][j]); dr = add_and(v); } } } vector <int> v; for(int i = st; i <= dr ; ++i) v.push_back(i); add_or(v); return ; }
#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...