Submission #202655

#TimeUsernameProblemLanguageResultExecution timeMemory
202655stefdascaNautilus (BOI19_nautilus)C++14
66 / 100
1082 ms24004 KiB
#include<bits/stdc++.h> #define god dimasi5eks #pragma GCC optimize("O3") #define fi first #define se second #define pb push_back #define pf push_front #define mod 1000000007 #define dancila 3.14159265359 #define eps 1e-9 // #define fisier 1 using namespace std; typedef long long ll; int n, m, k; string s; char mat[502][502]; bitset<501> dp[5002][502]; int main() { #ifdef fisier ifstream f("input.in"); ofstream g("output.out"); #endif ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m >> k; for(int i = 0; i < n; ++i) cin >> mat[i]; cin >> s; for(int i = 0; i < n; ++i) for(int j = 0; j < m; ++j) if(mat[i][j] != '#') dp[0][i][j] = 1; for(int x = 0; x < k; ++x) for(int i = 0; i < n; ++i) for(int j = 0; j < m; ++j) { if(dp[x][i][j] == 0) continue; if(s[x] == 'E' || s[x] == '?') { if(j + 1 < m && mat[i][j+1] != '#') dp[x+1][i][j+1] = 1; } if(s[x] == 'S' || s[x] == '?') { if(i + 1 < n && mat[i+1][j] != '#') dp[x+1][i+1][j] = 1; } if(s[x] == 'W' || s[x] == '?') { if(j && mat[i][j-1] != '#') dp[x+1][i][j-1] = 1; } if(s[x] == 'N' || s[x] == '?') { if(i && mat[i-1][j] != '#') dp[x+1][i-1][j] = 1; } } int ans = 0; for(int i = 0; i < n; ++i) for(int j = 0; j < m; ++j) ans += dp[k][i][j]; cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...