Submission #1070028

#TimeUsernameProblemLanguageResultExecution timeMemory
1070028vjudge1Toy (CEOI24_toy)C++17
100 / 100
300 ms295068 KiB
#include <bits/stdc++.h> #define div / #define ll long long #define fore(i, l, r) for(int i=int(l); i<int(r); i++) #define sz(a) int((a).size()) using namespace std; const int INF = 1e9; const int MX = 5e5 + 23; const int MOD = 1000000007; const int N = 1e6; int w,h,k,l,xh,yh,xv,yv; char grid[1505][1505]; int up[1505][1505],down[1505][1505],lijevo[1505][1505],desno[1505][1505],visited[1505][1505],ans; void floodfill(int x, int y) { if(grid[x][y] == '*') { ans=1; return; } if(visited[x][y]) return; visited[x][y] = 1; // pomjeranje u desno if(y < w-1) if(grid[x][y+1] != 'X' and min(up[x][y],up[x][y+1])+min(down[x][y],down[x][y+1])-1 >= l) floodfill(x,y+1); // pomjeranje u lijevo if(y > 0) if(grid[x][y-1] != 'X' and min(up[x][y],up[x][y-1])+min(down[x][y],down[x][y-1])-1 >= l) floodfill(x,y-1); // pomjeranje gore if(x > 0) if(grid[x-1][y] != 'X' and min(lijevo[x][y],lijevo[x-1][y])+min(desno[x][y],desno[x-1][y])-1 >= k) floodfill(x-1,y); // pomjeranje dole if(x < h-1) if(grid[x+1][y] != 'X' and min(lijevo[x][y],lijevo[x+1][y])+min(desno[x][y],desno[x+1][y])-1 >= k) floodfill(x+1,y); } void solve() { cin >> w >> h >> k >> l; cin >> xh >> yh >> xv >> yv; fore(i,0,h) fore(j,0,w) cin >> grid[i][j]; fore(j,0,w) { // racunanje up i down fore(i,0,h) { if(grid[i][j] == 'X') up[i][j] = 0; else if(i==0) up[i][j] = 1; else if(i) up[i][j] = up[i-1][j]+1; } for(int i=h-1; i>=0; i--) { if(grid[i][j] == 'X') down[i][j] = 0; else if(i == h-1) down[i][j] = 1; else if(i < h-1) down[i][j] = down[i+1][j]+1; } } fore(i,0,h) { // racunanje left i desno fore(j,0,w) { if(grid[i][j] == 'X') desno[i][j] = 0; else if(j==0) desno[i][j] = 1; else if(j) desno[i][j] = desno[i][j-1]+1; } for(int j=w-1; j>=0; j--) { if(grid[i][j] == 'X') lijevo[i][j] = 0; else if(j == w-1) lijevo[i][j] = 1; else if(j < w-1) lijevo[i][j] = lijevo[i][j+1]+1; } } floodfill(yh,xv); if(ans) cout << "YES" << endl; else cout << "NO" << endl; } int main() { ios::sync_with_stdio(false); int t=1; while(t--) solve(); }
#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...