Submission #526211

#TimeUsernameProblemLanguageResultExecution timeMemory
526211Yazan_AlattarNautilus (BOI19_nautilus)C++14
29 / 100
15 ms496 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define F first #define S second #define pb push_back #define endl "\n" #define all(x) x.begin(), x.end() const int M = 105; const ll inf = 2e9; const ll mod = 998244353; const double pi = acos(-1); const int dx[] = {1, 0, -1, 0}, dy[] = {0, 1, 0, -1}; const char dirs[] = {'S', 'E', 'N', 'W'}; vector < vector <ll> > dp(M, vector <ll> (M)); ll n, m, ans, len; string s; char a[M][M]; int main() { cin >> n >> m >> len; for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) cin >> a[i][j], dp[i][j] = 1; cin >> s; for(int idx = 0; idx < len; ++idx){ vector < vector <ll> > to(M, vector <ll> (M)); for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) if(a[i][j] != '#') for(int dir = 0; dir < 4; ++dir) if(s[idx] == '?' || s[idx] == dirs[dir]) to[i + dx[dir]][j + dy[dir]] += dp[i][j]; dp = to; } for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) if(a[i][j] != '#') ans += (dp[i][j] > 0); cout << ans << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...