This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
const int N=1505;
int h,w,k,l;
int xh,yh,xv,yv;
int top[N][N],bot[N][N],lef[N][N],rig[N][N];
string a[N];
queue<pair<int,int>> q;
bool vis[N][N];
bool checkh(int i1,int j1,int i2,int j2){
int l1=max(lef[i1][j1],j1-k);
int r1=min(rig[i1][j1],j1+k);
int l2=max(lef[i2][j2],j2-k);
int r2=min(rig[i2][j2],j2+k);
return min(r1,r2)-max(l1,l2)-1>=k;
}
bool checkv(int i1,int j1,int i2,int j2){
int l1=max(top[i1][j1],i1-l);
int r1=min(bot[i1][j1],i1+l);
int l2=max(top[i2][j2],i1-l);
int r2=min(bot[i2][j2],i1+l);
return min(r1,r2)-max(l1,l2)-1>=l;
}
int main(){
cin.tie(nullptr)->sync_with_stdio(false);
cin >> w >> h >> k >> l;
cin >> xh >> yh >> xv >> yv;
for(int i=0;i<h;i++)cin >> a[i];
for(int i=0;i<h;i++){
lef[i][0]=a[i][0]=='X'?0:-1;
for(int j=1;j<w;j++)lef[i][j]=a[i][j]=='X'?j:lef[i][j-1];
}
for(int i=0;i<h;i++){
rig[i][w-1]=a[i][w-1]=='X'?w-1:w;
for(int j=w-2;j>=0;j--)rig[i][j]=a[i][j]=='X'?j:rig[i][j+1];
}
for(int j=0;j<w;j++)top[0][j]=a[0][j]=='X'?0:-1;
for(int i=1;i<h;i++)for(int j=0;j<w;j++)top[i][j]=a[i][j]=='X'?i:top[i-1][j];
for(int j=0;j<w;j++)bot[h-1][j]=a[h-1][j]=='X'?h-1:h;
for(int i=h-2;i>=0;i--)for(int j=0;j<w;j++)bot[i][j]=a[i][j]=='X'?i:bot[i+1][j];
vis[yh][xv]=true;
q.emplace(yh,xv);
while(!q.empty()){
auto [i,j]=q.front();
q.pop();
if(a[i][j]=='*')cout << "YES",exit(0);
if(j+1<w&&!vis[i][j+1]&&checkv(i,j,i,j+1)){
vis[i][j+1]=true;
q.emplace(i,j+1);
}
if(j>0&&!vis[i][j-1]&&checkv(i,j,i,j-1)){
vis[i][j-1]=true;
q.emplace(i,j-1);
}
if(i+1<h&&!vis[i+1][j]&&checkh(i,j,i+1,j)){
vis[i+1][j]=true;
q.emplace(i+1,j);
}
if(i>0&&!vis[i-1][j]&&checkh(i,j,i-1,j)){
vis[i-1][j]=true;
q.emplace(i-1,j);
}
}
cout << "NO";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |