Submission #211397

#TimeUsernameProblemLanguageResultExecution timeMemory
211397casperwangNautilus (BOI19_nautilus)C++14
66 / 100
1096 ms1664 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]; bool 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] == '?') { for (int i = 1; i <= r; i++) for (int j = 1; j <= c; j++) for (dp[i][j][k&1] = d = 0; d < 4 && !dp[i][j][k&1]; d++) dp[i][j][k&1] |= ((mp[i][j] != '#') & (dp[i+dx[d]][j+dy[d]][(k+1)&1])); } else { if (str[k] == 'S') d = 0; else if (str[k] == 'N') d = 1; else if (str[k] == 'E') d = 2; else if (str[k] == 'W') d = 3; for (int i = 1; i <= r; i++) for (int j = 1; j <= c; j++) dp[i][j][k&1] = ((mp[i][j] != '#') & (dp[i+dx[d]][j+dy[d]][(k+1)&1])); } } for (int i = 1; i <= r; i++) for (int j = 1; j <= c; j++) cnt += dp[i][j][(m+1)&1]; cout << cnt << "\n"; }

Compilation message (stderr)

nautilus.cpp: In function 'int main()':
nautilus.cpp:33:34: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
           for (dp[i][j][k&1] = d = 0; d < 4 && !dp[i][j][k&1]; d++)
                                ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...