Submission #577937

#TimeUsernameProblemLanguageResultExecution timeMemory
577937MohamedFaresNebiliNautilus (BOI19_nautilus)C++14
100 / 100
114 ms157188 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("Ofast") #pragma GCC target ("avx2") using namespace std; using ll = long long; using ii = pair<ll, ll>; #define ff first #define ss second #define pb push_back const int oo = 1e9 + 7; int r, c, m; bitset<501> grid[502]; bitset<501> dp[502][5001]; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> r >> c >> m; for(int l = 1; l <= r; l++) { for(int i = 1; i <= c; i++) { char ch; cin >> ch; if(ch == '.') grid[l][i] = 1; dp[l][0][i] = grid[l][i]; } } string s; cin >> s; for(int l = 1; l <= m; l++) { for(int i = 1; i <= r; i++) { if(s[l - 1] == 'S') dp[i][l] = dp[i - 1][l - 1] & grid[i]; if(s[l - 1] == 'N') dp[i][l] = dp[i + 1][l - 1] & grid[i]; if(s[l - 1] == 'E') dp[i][l] = (dp[i][l - 1] << 1) & grid[i]; if(s[l - 1] == 'W') dp[i][l] = (dp[i][l - 1] >> 1) & grid[i]; if(s[l - 1] == '?') dp[i][l] = (dp[i + 1][l - 1] | dp[i - 1][l - 1] | (dp[i][l - 1] << 1) | (dp[i][l - 1] >> 1)) & grid[i]; } } int res = 0; for(int l = 1; l <= r; l++) res += dp[l][m].count(); cout << res << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...