제출 #958172

#제출 시각아이디문제언어결과실행 시간메모리
958172ezzzayNautilus (BOI19_nautilus)C++14
66 / 100
468 ms250832 KiB
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define int long long
#define ss second
#define pb push_back
const int N=5e3+5;
const int NM=501;
char arr[NM][NM];
bool dp[NM][NM][NM];
bitset<N>vis[NM];
signed main(){
    int n,m,k;
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>arr[i][j];
        }
    }
    string s;
    cin>>s;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(arr[i][j]=='#')continue;
            dp[0][i][j]=1;
        }
    }
    for(int l=0;l<k;l++){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(arr[i][j]=='#')continue;
                if(s[l]=='N'){ 
                    dp[l+1][i][j]|=dp[l][i+1][j];
                }
                if(s[l]=='E'){ 
                    dp[l+1][i][j]|=dp[l][i][j-1];
                }
                if(s[l]=='S'){ 
                    dp[l+1][i][j]|=dp[l][i-1][j];
                }
                if(s[l]=='W'){ 
                    dp[l+1][i][j]|=dp[l][i][j+1];
                }
                if(s[l]=='?'){
                    dp[l+1][i][j]|=dp[l][i+1][j];
                    dp[l+1][i][j]|=dp[l][i][j+1];
                    dp[l+1][i][j]|=dp[l][i-1][j];
                    dp[l+1][i][j]|=dp[l][i][j-1];
                }
            }
        } 
    }
    int cnt=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(arr[i][j]=='#')continue;
            if(dp[k][i][j])cnt++;
        }
    }
    cout<<cnt;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...