#include <iostream>
#include <bitset>
using namespace std;
bitset<505 * 505> cur, Lft, Rgt, Dwn, Up;
string s, ss;
int main(){
int n, m, k;
cin>>n>>m>>k;
for (int i=0;i<n;i++)
cin>>s, ss += s;
for (int i=0;i<n * m;i++){
if (i % m != 0 and ss[i-1] != '#')
Lft[i] = 1;
if (i % m != m - 1 and ss[i+1] != '#')
Rgt[i] = 1;
if (i / m != 0 and ss[i-m] != '#')
Up[i] = 1;
if (i / m != n - 1 and ss[i+m] != '#')
Dwn[i] = 1;
if (ss[i] != '#')
cur[i] = 1;
}
cin>>s;
for (int i=1;i<=k;i++){
if (s[i-1] == 'E'){
cur = (cur & Rgt) << 1;
}
else if (s[i-1] == 'W'){
cur = (cur & Lft) >> 1;
}
else if (s[i-1] == 'N'){
cur = (cur & Up ) >> m;
}
else if (s[i-1] == 'S'){
cur = (cur & Dwn) << m;
}
else{
cur = ((cur & Rgt) << 1) | ((cur & Lft) >> 1) | ((cur & Up) >> m) | ((cur & Dwn) << m);
}
}
cout<<cur.count()<<endl;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |