Submission #807394

#TimeUsernameProblemLanguageResultExecution timeMemory
807394MODDINautilus (BOI19_nautilus)C++14
66 / 100
1071 ms3276 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(){ 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 i = 0; i < r; i++){ // for(int j = 0; j < c; j++){ // cout<<dp[0][i][j]<<" "; // } // cout<<endl; // } // cout<<endl; // assert(false); for(int step = 1; step <= n; step++){ for(int i = 0; i < r; i++){ for(int j = 0; j < c; j++){ dp[step%2][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[(step-1)%2][i][j-1] == 1 && j > 0) dp[step%2][i][j] = 1; if((str[step-1] == 'W' || str[step-1] == '?') && mat[i][j] == 1 && dp[(step-1)%2][i][j+1] == 1 && j + 1 < c) dp[step%2][i][j] = 1; if((str[step-1] == 'N' || str[step-1] == '?') && i < r-1 && mat[i][j] == 1 && dp[(step-1)%2][i+1][j] == 1) dp[step%2][i][j] = 1; if((str[step-1]=='S' || str[step-1] == '?') && i > 0 && mat[i][j] == 1 && dp[(step-1)%2][i-1][j]==1) dp[step%2][i][j] = 1; } } // for(int i = 0; i < r; i++){ // for(int j = 0; j < c; j++){ // cout<<dp[step][i][j]<<" "; // } // cout<<endl; // } // cout<<endl; } 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<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...