제출 #153221

#제출 시각아이디문제언어결과실행 시간메모리
153221kungfulonNautilus (BOI19_nautilus)C++14
66 / 100
12 ms888 KiB
#include <bits/stdc++.h> #define rep(i,a,b) for(int i = a;i <= b;i++) #define repd(i,a,b) for(int i = a;i >= b;i--) using namespace std; const int N = 112; int r,c,m,dp[N][N],temp[N][N],grid[N][N]; int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); // ifstream cin ("nautilus.inp"); cin >> r >> c >> m; rep(i,1,r) rep(j,1,c) { char k; cin >> k; dp[i][j] = (k == '.'); grid[i][j] = dp[i][j]; } rep(_,1,m) { char k; cin >> k; switch(k) { case 'N': { rep(i,1,r) rep(j,1,c) temp[i][j] = dp[i][j]; rep(i,1,r) rep(j,1,c) if(grid[i][j])temp[i][j] = dp[i+1][j]; rep(i,1,r) rep(j,1,c) dp[i][j] = temp[i][j]; break; } case 'E' : { rep(i,1,r) rep(j,1,c) temp[i][j] = dp[i][j]; rep(i,1,r) rep(j,1,c) if(grid[i][j])temp[i][j] = dp[i][j-1]; rep(i,1,r) rep(j,1,c) dp[i][j] = temp[i][j]; break; } case 'S': { rep(i,1,r) rep(j,1,c) temp[i][j] = dp[i][j]; rep(i,1,r) rep(j,1,c) if(grid[i][j])temp[i][j] = dp[i-1][j]; rep(i,1,r) rep(j,1,c) dp[i][j] = temp[i][j]; break; } case 'W': { rep(i,1,r) rep(j,1,c) temp[i][j] = dp[i][j]; rep(i,1,r) rep(j,1,c) if(grid[i][j])temp[i][j] = dp[i][j+1]; rep(i,1,r) rep(j,1,c) dp[i][j] = temp[i][j]; break; } default : { rep(i,1,r) rep(j,1,c) temp[i][j] = dp[i][j]; rep(i,1,r) rep(j,1,c) if(grid[i][j])temp[i][j] = (dp[i-1][j] || dp[i+1][j] || dp[i][j-1] || dp[i][j+1]); rep(i,1,r) rep(j,1,c) dp[i][j] = temp[i][j]; } } } int ans = 0; rep(i,1,r) rep(j,1,c) ans += dp[i][j]; cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...