Submission #210631

#TimeUsernameProblemLanguageResultExecution timeMemory
210631casperwangNautilus (BOI19_nautilus)C++14
66 / 100
1095 ms3064 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 500; int r, c, m; int d; int cnt; string str; string mp[MAXN+5]; int dp[MAXN+5][MAXN+5][2]; int dx[4] = {-1, 1, 0, 0}; int dy[4] = {0, 0, -1, 1}; signed main() { ios_base::sync_with_stdio(0), cin.tie(0); cin >> r >> c >> m; for (int i = 1; i <= r; i++) { cin >> mp[i]; mp[i] = "#" + mp[i] + "#"; } cin >> str; for (int i = 0; i <= c+1; i++) { mp[0] = mp[0] + "#"; mp[r+1] = mp[r+1] + "#"; } for (int i = 1; i <= r; i++) for (int j = 1; j <= c; j++) dp[i][j][1] = (mp[i][j] != '#'); for (int k = 0; k < m; k++) { if (str[k] == 'S') d = 0; if (str[k] == 'N') d = 1; if (str[k] == 'E') d = 2; if (str[k] == 'W') d = 3; for (int i = 1; i <= r; i++) for (int j = 1; j <= c; j++) dp[i][j][k%2] = (mp[i][j] != '#') * (dp[i+dx[d]][j+dy[d]][(k+1)%2]); if (str[k] != '?') continue; for (int i = 1; i <= r; i++) for (int j = 1; j <= c; j++) for (int d = 0; d < 4; d++) dp[i][j][k%2] |= (mp[i][j] != '#') * (dp[i+dx[d]][j+dy[d]][(k+1)%2]); } for (int i = 1; i <= r; i++) for (int j = 1; j <= c; j++) cnt += dp[i][j][(m+1)%2]; cout << cnt << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...