제출 #1208889

#제출 시각아이디문제언어결과실행 시간메모리
1208889HappyCapybaraToy (CEOI24_toy)C++20
100 / 100
192 ms36652 KiB
#include<bits/stdc++.h> using namespace std; int main(){ int w, h, hl, vl, xh, y, x, yv; cin >> w >> h >> hl >> vl >> xh >> y >> x >> yv; vector<vector<bool>> g(h, vector<bool>(w, true)); int tx, ty; for (int i=0; i<h; i++){ string s; cin >> s; for (int j=0; j<w; j++){ if (s[j] == 'X') g[i][j] = false; if (s[j] == '*'){ tx = j; ty = i; } } } vector<vector<int>> l(h, vector<int>(w)), r(h, vector<int>(w)), u(h, vector<int>(w)), d(h, vector<int>(w)); for (int i=0; i<h; i++){ for (int j=0; j<w; j++){ if (!g[i][j]){ l[i][j] = -1; u[i][j] = -1; continue; } if (j == 0) l[i][j] = 0; else l[i][j] = l[i][j-1]+1; if (i == 0) u[i][j] = 0; else u[i][j] = u[i-1][j]+1; } } for (int i=h-1; i>=0; i--){ for (int j=w-1; j>=0; j--){ if (!g[i][j]){ r[i][j] = -1; d[i][j] = -1; continue; } if (j == w-1) r[i][j] = 0; else r[i][j] = r[i][j+1]+1; if (i == h-1) d[i][j] = 0; else d[i][j] = d[i+1][j]+1; } } vector<vector<bool>> seen(h, vector<bool>(w, false)); queue<pair<int,int>> q; q.push({y, x}); while (!q.empty()){ int y = q.front().first, x = q.front().second; q.pop(); if (seen[y][x]) continue; seen[y][x] = true; if (y == ty && x == tx){ cout << "YES" << endl; return 0; } int lm = x-l[y][x], rm = x+r[y][x], um = y-u[y][x], dm = y+d[y][x]; if (y > 0){ if (min(rm, x+r[y-1][x])-max(lm, x-l[y-1][x])+1 >= hl) q.push({y-1, x}); } if (y < h-1){ if (min(rm, x+r[y+1][x])-max(lm, x-l[y+1][x])+1 >= hl) q.push({y+1, x}); } if (x > 0){ if (min(dm, y+d[y][x-1])-max(um, y-u[y][x-1])+1 >= vl) q.push({y, x-1}); } if (x < w-1){ if (min(dm, y+d[y][x+1])-max(um, y-u[y][x+1])+1 >= vl) q.push({y, x+1}); } } cout << "NO" << endl; }
#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...