#include <bits/stdc++.h>
using namespace std;
const int NMAX=500;
int n, m, c;
bitset <NMAX+5> mat[NMAX+5];
bitset <NMAX+5> dp[2][NMAX+5];
int main ()
{
ios_base :: sync_with_stdio (0);
cin.tie (nullptr);
cin >> n >> m >> c;
for (int i=1;i<=n;i++)
{
string input;
cin >> input;
for (int j=1;j<=m;j++)
{
mat[i][j]=(input[j-1]=='#'?1:0);
dp[0][i][j]=(input[j-1]=='#'?0:1);
}
}
string input;
cin >> input;
int t=0;
for (int i=1;i<=c;i++)
{
t=!t;
char ch=input[i-1];
if (ch=='E' || ch=='?')
{
for (int i=1;i<=n;i++)
{
dp[t][i] |=(dp[!t][i] >> 1 & ~mat[i]);
}
}
if (ch=='W' || ch=='?')
{
for (int i=1;i<=n;i++)
{
dp[t][i] |=(dp[!t][i] << 1 & ~mat[i]);
}
}
if (ch=='N' || ch=='?')
{
dp[t][n]=0;
for (int i=1;i<n;i++)
{
dp[t][i] |=(dp[!t][i+1] & ~mat[i]);
}
}
if (ch=='S' || ch=='?')
{
for (int i=2;i<=n;i++)
{
dp[t][i] |=(dp[!t][i-1] & ~mat[i]);
}
dp[t][1]=0;
}
}
int rez=0;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
rez +=(dp[t][i][j]==1);
}
}
cout << rez;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |