Submission #807400

#TimeUsernameProblemLanguageResultExecution timeMemory
807400MODDINautilus (BOI19_nautilus)C++14
66 / 100
1075 ms3284 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast") using namespace std; #define pb push_back #define mp make_pair typedef long long ll; typedef pair<long long, long long> pll; typedef pair<int,int> pii; typedef vector<long long> vl; typedef vector<int> vi; int r, c, n; string str; int mat[501][501]; int dp[2][501][501]; int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin>>r>>c>>n; memset(dp, 0, sizeof dp); memset(mat, 0, sizeof mat); for(int i = 0; i < r; i++){ string s; cin>>s; for(int j = 0; j < c; j++){ if(s[j] == '.'){ mat[i][j] = 1; dp[0][i][j] = 1; } } } cin>>str; for(int step = 1; step <= n; step++){ int sega = step % 2, pret = (step-1) % 2; for(int i = 0; i < r; i++){ for(int j = 0; j < c; j++){ dp[sega][i][j] = 0; } } for(int i = 0; i < r; i++){ for(int j = 0; j < c; j++){ if((str[step-1] == 'E' || str[step-1] == '?') && mat[i][j] == 1 && dp[pret][i][j-1] == 1 && j > 0) dp[sega][i][j] = 1; if((str[step-1] == 'W' || str[step-1] == '?') && mat[i][j] == 1 && dp[pret][i][j+1] == 1 && j + 1 < c) dp[sega][i][j] = 1; if((str[step-1] == 'N' || str[step-1] == '?') && i < r-1 && mat[i][j] == 1 && dp[pret][i+1][j] == 1) dp[sega][i][j] = 1; if((str[step-1]=='S' || str[step-1] == '?') && i > 0 && mat[i][j] == 1 && dp[pret][i-1][j]==1) dp[sega][i][j] = 1; } } } ll ans = 0; for(int i = 0; i < r; i++){ for(int j = 0; j < c;j ++){ ans += dp[n%2][i][j]; } } cout<<ans<<"\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...