Submission #1171438

#TimeUsernameProblemLanguageResultExecution timeMemory
1171438akamizaneNautilus (BOI19_nautilus)C++20
100 / 100
107 ms820 KiB
#include<bits/stdc++.h> using namespace std; #define debug(...) 42 #define int long long using ll = long long; const int sz = 505; const int maxn = 5005; bitset<sz> dp[2][sz], ok[sz]; void solve(){ int r, c, m; cin >> r >> c >> m; vector<string> a(r); for (auto& x : a) cin >> x; for (int i = 0; i < r; i++){ for (int j = 0; j < c; j++){ if (a[i][j] == '.'){ ok[i][j] = 1; dp[0][i][j] = 1; } } } string s; cin >> s; for (int i = 1; i <= m; i++){ auto cur = s[i - 1]; for (int i = 0; i < r; i++){ if (cur == 'W' || cur == '?'){ dp[1][i] |= (dp[0][i] >> 1); } if (cur == 'S' || cur == '?'){ if (i > 0){ dp[1][i] |= (dp[0][i - 1]); } } if (cur == 'E' || cur == '?'){ dp[1][i] |= (dp[0][i] << 1); } if (cur == 'N' || cur == '?'){ if (i != r - 1) dp[1][i] |= (dp[0][i + 1]); } dp[1][i] &= ok[i]; } for (int i = 0; i < r; i++){ dp[0][i] = dp[1][i]; dp[1][i].reset(); } } debug(1); int ans = 0; for (int i = 0; i < r; i++){ for (int j = 0; j < c; j++){ ans += (dp[0][i][j] == 1); } } debug(ans); cout << ans; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); int tt = 1; // cin >> tt; while (tt--){ solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...