#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#pragma GCC optimize("O3")
const ll N=503;
bitset<N>a[N],f[N],nf[N];
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
ll n,m,k;
cin>>n>>m>>k;
for(int i=0;i<=n+1;++i)
f[i].reset(),nf[i].reset();
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
char c;cin>>c;
f[i][j]=a[i][j]=(c=='.');
}
}
string s;
cin>>s;
s='.'+s;
for(int j=1;j<=k;++j){
for(int i=1;i<=n;++i){
if(s[j]=='N')nf[i]|=a[i]&f[i+1];
if(s[j]=='E')nf[i]|=a[i]&(f[i]<<1);
if(s[j]=='S')nf[i]|=a[i]&f[i-1];
if(s[j]=='W')nf[i]|=a[i]&(f[i]>>1);
if(s[j]=='?')nf[i]|=a[i]&(f[i+1]|(f[i]<<1)|f[i-1]|(f[i]>>1));
}
for(int i=1;i<=n;++i)
f[i]=nf[i],nf[i].reset();
}
ll ans=0;
for(int i=1;i<=n;++i)
ans+=f[i].count();
cout<<ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |