제출 #807330

#제출 시각아이디문제언어결과실행 시간메모리
807330MODDINautilus (BOI19_nautilus)C++14
66 / 100
144 ms11652 KiB
#include <bits/stdc++.h> 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[111][101][101]; 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 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++){ if((str[step-1] == 'E' || str[step-1] == '?') && mat[i][j] == 1 && dp[(step-1)][i][j-1] == 1 && j > 0) dp[step][i][j] = 1; if((str[step-1] == 'W' || str[step-1] == '?') && mat[i][j] == 1 && dp[(step-1)][i][j+1] == 1 && j + 1 < c) dp[step][i][j] = 1; if((str[step-1] == 'N' || str[step-1] == '?') && i < r-1 && mat[i][j] == 1 && dp[(step-1)][i+1][j] == 1) dp[step][i][j] = 1; if((str[step-1]=='S' || str[step-1] == '?') && i > 0 && mat[i][j] == 1 && dp[(step-1)][i-1][j]==1) dp[step][i][j] = 1; } } } ll ans = 0; for(int i = 0; i < r; i++){ for(int j = 0; j < c;j ++){ ans += dp[n][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...