Submission #1187855

#TimeUsernameProblemLanguageResultExecution timeMemory
1187855jamalzadehNautilus (BOI19_nautilus)C++20
0 / 100
2 ms320 KiB
#include<bits/stdc++.h> using namespace std; int main() { int x,y , m; cin>>x>>y>>m; char map[x][y]; bool dp[x][y][4]={}; for(int i=0; i<x; i++) { for(int j=0; j<y; j++) { cin>>map[i][j]; } } char rotations[m]; for(int i=0; i<m; i++) { cin>>rotations[i]; } for(int i=0; i<x; i++) { for(int j=0; j<y; j++) { if(i<x-1 and map[i][j]=='.' and map[i+1][j]=='.') { dp[i][j][0]=true; } if(j<y-1 and map[i][j]=='.' and map[i][j+1]=='.') { dp[i][j][1]=true; } if(i-1>0 and map[i][j]=='.' and map[i-1][j]=='.') { dp[i][j][2]=true; } if(j-1>0 and map[i][j]=='.' and map[i][j-1]=='.') { dp[i][j][3]=true; } } } int ans=0; for(int i=0; i<x; i++) { for(int j=0; j<y; j++) { if(map[i][j]=='#') { continue; } bool canRotate=true; int dx=0, dy=0; for( char r : rotations) { if(r=='N' and dp[i+dx][j+dy][0]) { dx--; continue; } if(r=='E' and dp[i+dx][j+dy][1]) { dy++; continue; } if(r=='S' and dp[i+dx][j+dy][2]) { dx++; continue; } if(r=='W' and dp[i+dx][j+dy][3]) { dy--; continue; } if(r=='?') { if(dp[i+dx][j+dy][0]) { dx--; } else if(dp[i+dx][j+dy][1]) { dy++; } else if(dp[i+dx][j+dy][2]) { dx++; } else if(dp[i+dx][j+dy][3]) { dy--; } continue; } canRotate=false; break; } if(canRotate) { ans++; } } } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...