Submission #1194039

#TimeUsernameProblemLanguageResultExecution timeMemory
1194039nagorn_phNautilus (BOI19_nautilus)C++20
100 / 100
171 ms158640 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #define ordered_set <int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> #define ordered_multiset <int, null_type, less_equal <int>, rb_tree_tag, tree_order_statistics_node_update> #define int long long #define double long double #define pii pair <int, int> #define tiii tuple <int, int, int> #define tiiii tuple <int, int, int, int> #define emb emplace_back #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define iShowSpeed cin.tie(NULL)->sync_with_stdio(false) #define matrix vector <vector <int>> #define mat(n, m) vector <vector <int>> (n, vector <int> (m)); const int mod = 1e9 + 7; const int inf = 1e18; const matrix II = {{1, 0}, {0, 1}}; int dx[] = {0, 1, 0, -1}; int dy[] = {1, 0, -1, 0}; const int N = 5e2 + 5; const int L = 5e3 + 5; bitset <N> dp[L][N]; bitset <N> a[N]; int32_t main(){ iShowSpeed; int n, m, l; cin >> n >> m >> l; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { char c; cin >> c; a[i][j] = (c != '#'); dp[0][i][j] = a[i][j]; } } string s; cin >> s; s = ' ' + s; for (int k = 1; k <= l; k++) { if (s[k] == 'N' || s[k] == '?') for (int i = 1; i <= n; i++) dp[k][i] |= dp[k - 1][i + 1]; if (s[k] == 'S' || s[k] == '?') for (int i = 1; i <= n; i++) dp[k][i] |= dp[k - 1][i - 1]; if (s[k] == 'E' || s[k] == '?') for (int i = 1; i <= n; i++) dp[k][i] |= dp[k - 1][i] << 1; if (s[k] == 'W' || s[k] == '?') for (int i = 1; i <= n; i++) dp[k][i] |= dp[k - 1][i] >> 1; for (int i = 1; i <= n; i++) dp[k][i] &= a[i]; } int ans = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { ans += dp[l][i][j]; } } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...