#include <bits/stdc++.h>
using namespace std;
bitset<505> dp[505][5005];
bitset<505> sea[505];
string s;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int a,b,c;
cin >> a >> b >> c;
for (int i=a;i>=1;i--){
for (int j=b;j>=1;j--){
char c;
cin >> c;
if (c=='.'){
sea[i][j]=1;
}else{
sea[i][j]=0;
}
}
}
string s;
cin >> s;
s='#'+s;
for (int i=1;i<=a;i++){
dp[i][0]=sea[i];
}
for (int j=1;j<=c;j++){
if (s[j]=='N'){
for (int i=1;i<=a;i++){
dp[i][j]= dp[i-1][j-1]&sea[i];
}
}else if (s[j]=='S'){
for (int i=1;i<=a;i++){
dp[i][j]= dp[i+1][j-1]&sea[i];
}
}else if (s[j]=='W'){
for (int i=1;i<=a;i++){
dp[i][j]= (dp[i][j-1]<<1)&sea[i];
}
}else if (s[j]=='E'){
for (int i=1;i<=a;i++){
dp[i][j]= (dp[i][j-1]>>1)&sea[i];
}
}else{
for (int i=1;i<=a;i++){
dp[i][j]= ((dp[i][j-1]>>1)|(dp[i][j-1]<<1)|dp[i+1][j-1]|dp[i-1][j-1])&sea[i];
}
}
}
int ans=0;
for (int i=1;i<=a;i++){
for (int j=1;j<=b;j++){
ans+=dp[i][c][j];
}
}
cout << ans << "\n";
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... |