제출 #1140732

#제출 시각아이디문제언어결과실행 시간메모리
1140732UmairAhmadMirzaToy (CEOI24_toy)C++20
35 / 100
483 ms298812 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long int const N=92; int const mod=1e9+7; int hor[N][N],ver[N][N]; bool vis[N][N][N][N]; int n,m,l,k; int rt,ct; bool valid(int rh,int ch,int rv,int cv){ if(vis[rh][ch][rv][cv]) return 0; bool b=0; // if(rh==1){ // cout<<rh<<' '<<ch<<' '<<rv<<' '<<cv<<endl; // cout<<"wer"<<endl; // b=1; // } if(rh<=0 || rh>m || rv<=0 || rv>m || ch<=0 || ch>n ||cv<=0 || cv>n) return 0; if(rv>rh || rv+(l-1)<rh || ch>cv || ch+(k-1)<cv || (rv+l)-1>m || (ch+k)-1>n){ return 0; } if(hor[rh][ch-1]!=hor[rh][(ch-1)+k]){ return 0; } if(ver[rv-1][cv]!=ver[(rv-1)+l][cv]) return 0; return 1; } void dfs(int rh,int ch,int rv,int cv){ if(valid(rh,ch,rv,cv)==0) return; vis[rh][ch][rv][cv]=1; // cout<<rh<<' '<<ch<<' '<<rv<<' '<<cv<<endl; if(rh==rt && cv==ct){ cout<<"YES"<<endl; exit(0); } //hor dfs(rh+1,ch,rv,cv); dfs(rh-1,ch,rv,cv); dfs(rh,ch+1,rv,cv); dfs(rh,ch-1,rv,cv); dfs(rh,ch,rv+1,cv); dfs(rh,ch,rv-1,cv); dfs(rh,ch,rv,cv+1); dfs(rh,ch,rv,cv-1); } int main(){ cin>>n>>m>>k>>l; int rh,ch,rv,cv; cin>>ch>>rh>>cv>>rv; rh++;ch++;cv++;rv++; for (int r = 1; r <=m; ++r) { string s; cin>>s; for (int c = 1; c <=n; c++) { if(s[c-1]=='*'){ rt=r; ct=c; } else if(s[c-1]=='X'){ hor[r][c]=1; ver[r][c]=1; } } } for (int i = 1; i <=m; ++i) for(int j=1;j<=n;j++) ver[i][j]+=ver[i-1][j]; for (int i = 1; i <=m; ++i) for(int j=1;j<=n;j++) hor[i][j]+=hor[i][j-1]; dfs(rh,ch,rv,cv); // cout<<hor[1][3-1]<<' '<<hor[1][(3-1)+k]<<endl; cout<<"NO"<<endl; 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...