#include <bits/extc++.h>
using namespace std;
using namespace __gnu_pbds;
template<typename T>
using oset = tree<T, null_type, less<T>, rb_tree_tag,
tree_order_statistics_node_update>;
#define cut4(a,b,c,d,e,...) e
#define rep1(n) for(int i=0;i<(n);++i)
#define rep2(i,n) for(int i=0;i<(n);++i)
#define rep3(i,a,b) for(int i=(a);i<(b);++i)
#define rep4(i,a,b,c) for(int i=(a);i<(b);i+=(c))
#define rev1(n) for(int i=(n)-1;i>=0;--i)
#define rev2(i,n) for(int i=(n)-1;i>=0;--i)
#define rev3(i,a,b) for(int i=(a)-1;i>=(b);--i)
#define rev4(i,a,b,c) for(int i=(a)-1;i>=(b);i-=(c))
#define rep(...) cut4(__VA_ARGS__,rep4,rep3,rep2,rep1)(__VA_ARGS__)
#define rev(...) cut4(__VA_ARGS__,rev4,rev3,rev2,rev1)(__VA_ARGS__)
#define each(a, x) for(auto& a:x)
#define all(x) begin(x),end(x)
#define sz(x) (int)(x).size()
#define over(x) {cout<<(x)<<'\n';return;}
#define chmin(a,b) a=min(a,b)
#define chmax(a,b) a=max(a,b)
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define f first
#define s second
typedef long long ll;
typedef long double db;
typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef array<int, 3> qi;
typedef array<ll, 3> ql;
typedef vector<bool> vb;
typedef vector<char> vc;
typedef vector<string> vs;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vi> vvi;
typedef vector<vl> vvl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<qi> vqi;
typedef vector<ql> vql;
// const db PI = atan(1)*4;
// const ll mod = 1e9+7;
const ll mod = 998244353;
const int mx=500*500;
bitset<mx> msk;
void solve(int){
int n, m, k;
cin>>n>>m>>k;
rep(n)rep(j,m){
char c;
cin>>c;
if(c=='.') msk[i*m+j]=1;
}
string s;
cin>>s;
bitset<mx> a;
rep(mx)a[i]=1;
a&=msk;
rep(sz(s)){
bitset<mx> b(0);
if(s[i]=='N'||s[i]=='?') b|=a>>m;
if(s[i]=='S'||s[i]=='?') b|=a<<m;
if(s[i]=='E'||s[i]=='?') {
bitset<mx> c=a;
rep(n)c[i*m+m-1]=0;
b|=c<<1;
}
if(s[i]=='W'||s[i]=='?') {
bitset<mx>c=a;
rep(n)c[i*m]=0;
b|=c>>1;
}
a=b&msk;
}
int ans=a.count();
cout<<ans;
}
int main(){
cin.tie(0)->sync_with_stdio(0);
cin.exceptions(cin.failbit);
int tc=1;
// cin>>tc;
rep(tc) solve(i);
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... |