//#pragma GCC target ("avx2")
//#pragma GCC optimize ("Ofast")
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define F first
#define S second
#define pb push_back
const int N = 1e6+100, NN=26, mod=1e9+7;
int dp[N];
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, m, k;
cin >> n >> m >> k;
char a[n + 1][m + 1];
bitset < 501 > b[n + 6], b1[n + 6], b2[n + 6];
for(int i = 1 ; i <= n ; ++i) {
for(int j = 1 ; j <= m ; ++j) {
cin >> a[i][j];
if(a[i][j] == '.') b[i][j] = 1;
}
b2[i] = b[i];
}
string s;
cin >> s;
for(int o = 0 ; o < k ; ++o) {
if(s[o] == 'W') {
for(int i = 1 ; i <= n ; ++i){
b1[i] = (b[i]>>1);
b1[i] &= b2[i];
b[i] = b1[i];
}
}
if(s[o] == 'E') {
for(int i = 1 ; i <= n ; ++i){
b1[i] = (b[i]<<1);
b1[i] &= b2[i];
b[i] = b1[i];
}
}
if(s[o] == 'S') {
for(int i = 1 ; i <= n ; ++i) {
b1[i] = b[i - 1];
b1[i] &= b2[i];
}
for(int i = 1 ; i <= n ; ++i) {
b[i] = b1[i];
}
}
if(s[o] == 'N') {
for(int i = 1 ; i <= n ; ++i) {
b1[i] = b[i + 1];
b1[i] &= b2[i];
}
for(int i = 1 ; i <= n ; ++i) {
b[i] = b1[i];
}
}
if(s[o] == '?') {
for(int i = 1 ; i <= n ; ++i) {
b1[i] = ((b[i] >> 1)|(b[i]<<1)|(b[i+1])|(b[i-1]));
b1[i] &= b2[i];
}
for(int i=1;i<=n;i++) b[i]=b1[i];
}
}
int ans=0;
for(int i = 1 ; i <= n ; ++i) {
for(int j = 1 ; j <= m ; ++j) ans+=b[i][j];
}
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... |