Submission #446278

#TimeUsernameProblemLanguageResultExecution timeMemory
446278osmanallazovNautilus (BOI19_nautilus)C++14
66 / 100
14 ms4640 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;
char a[105][105];
int dp[105][105][105];
int main(){
    int r,c,m;
    cin>>r>>c>>m;
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            cin>>a[i][j];
        }
    }
    int say=0;
    string s;
    cin>>s;
    for (int i=1;i<=r;i++) {
        for (int j=1;j<=c;j++) {
            dp[i][j][0]=(a[i][j]=='.');
        }
    }
    for(int k=1;k<=m;k++) {
        for(int i=1; i<=r;i++) {
            for(int j=1; j<=c;j++) {
                if (a[i][j] == '#')
                    continue;
                int x = i, y = j;
                if (s[k-1]=='N')x++;
                else if(s[k-1]=='S')x--;
                else if(s[k-1]=='W')y++;
                else if(s[k-1]=='E')y--;
                else{
                    x--;
                    dp[i][j][k] |= dp[i - 1][j][k-1];
                    dp[i][j][k] |= dp[i][j - 1][k-1];
                    dp[i][j][k] |= dp[i + 1][j][k-1];
                    dp[i][j][k] |= dp[i][j + 1][k-1];
                }
                dp[i][j][k] |= dp[x][y][k-1];
            }
        }
    }
    for(int i=1;i<=r;i++) {
        for(int j=1;j<=c;j++) {
            say += dp[i][j][m];
        }
    }
    cout<<say;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...