Submission #1090371

#TimeUsernameProblemLanguageResultExecution timeMemory
1090371lucriToy (CEOI24_toy)C++17
100 / 100
115 ms42732 KiB
#include <bits/stdc++.h> using namespace std; int n,m,l,c,x,y,xx,yy,stop[4][1510][1510]; char a[1510][1510]; bool ok[1510][1510]; queue<pair<int,int>>q; bool verificaorizontal(int i,int ii,int j) { return (min(stop[1][i][j],stop[1][ii][j])-max(stop[0][i][j],stop[0][ii][j])-1)>=c; } bool verificavertical(int j,int jj,int i) { return (min(stop[3][i][j],stop[3][i][jj])-max(stop[2][i][j],stop[2][i][jj])-1)>=l; } int main() { cin>>m>>n>>c>>l>>x>>y>>xx>>yy; ok[y][xx]=true; q.push({y,xx}); for(int i=0;i<n;++i) cin>>a[i]; for(int i=0;i<n;++i) { if(a[i][0]!='X') stop[0][i][0]=-1; else stop[0][i][0]=0; for(int j=1;j<m;++j) if(a[i][j]!='X') stop[0][i][j]=stop[0][i][j-1]; else stop[0][i][j]=j; if(a[i][m-1]!='X') stop[1][i][m-1]=m; else stop[1][i][m-1]=m-1; for(int j=m-2;j>=0;--j) if(a[i][j]!='X') stop[1][i][j]=stop[1][i][j+1]; else stop[1][i][j]=j; } for(int j=0;j<m;++j) { if(a[0][j]!='X') stop[2][0][j]=-1; else stop[2][0][j]=0; for(int i=1;i<n;++i) if(a[i][j]!='X') stop[2][i][j]=stop[2][i-1][j]; else stop[2][i][j]=i; if(a[n-1][j]!='X') stop[3][n-1][j]=n; else stop[3][n-1][j]=n-1; for(int i=n-2;i>=0;--i) if(a[i][j]!='X') stop[3][i][j]=stop[3][i+1][j]; else stop[3][i][j]=i; } while(!q.empty()) { int i=q.front().first; int j=q.front().second; q.pop(); if(i&&ok[i-1][j]==false) { if(a[i-1][j]!='X'&&verificaorizontal(i,i-1,j)) { ok[i-1][j]=true; q.push({i-1,j}); } } if(i<n-1&&ok[i+1][j]==false) { if(a[i+1][j]!='X'&&verificaorizontal(i,i+1,j)) { ok[i+1][j]=true; q.push({i+1,j}); } } if(j&&ok[i][j-1]==false) { if(a[i][j-1]!='X'&&verificavertical(j,j-1,i)) { ok[i][j-1]=true; q.push({i,j-1}); } } if(j<m-1&&ok[i][j+1]==false) { if(a[i][j+1]!='X'&&verificavertical(j,j+1,i)) { ok[i][j+1]=true; q.push({i,j+1}); } } } for(int i=0;i<n;++i) for(int j=0;j<m;++j) if(a[i][j]=='*') { if(ok[i][j]==true) cout<<"YES"; else cout<<"NO"; } return 0; }
#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...