#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vi> vvi;
typedef vector<vl> vvl;
typedef vector<pii> vii;
int main(){
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int r, c, m; cin>>r>>c>>m;
bool mm[r][c][2];
bool taken[r][c];
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
taken[i][j]=0;
}
}
for(int i=0; i<r; i++){
string s; cin>>s;
for(int j=0; j<c; j++){
if(s[j]=='#'){
taken[i][j]=1;
}
}
}
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
mm[i][j][0]=!taken[i][j];
}
}
string way; cin>>way;
int ind=0;
for(int l=0; l<m; l++){
ind=1-ind;
if(way[l]=='?'){
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
if(taken[i][j]){
mm[i][j][ind]=0;
continue;
}
if((i && mm[i-1][j][1-ind]) || (j && mm[i][j-1][1-ind]) || (i<r-1 && mm[i+1][j][1-ind]) || (j<c-1 && mm[i][j+1][1-ind])){
mm[i][j][ind]=1;
}
else mm[i][j][ind]=0;
}
}
}
else if(way[l]=='N'){
for(int i=0; i<r-1; i++){
for(int j=0; j<c; j++){
if(taken[i][j]){
mm[i][j][ind]=0;
continue;
}
if((mm[i+1][j][1-ind])){
mm[i][j][ind]=1;
}
else mm[i][j][ind]=0;
}
}
for(int j=0; j<c; j++){
mm[r-1][j][ind]=0;
}
}
else if(way[l]=='S'){
for(int i=1; i<r; i++){
for(int j=0; j<c; j++){
if(taken[i][j]){
mm[i][j][ind]=0;
continue;
}
if((mm[i-1][j][1-ind])){
mm[i][j][ind]=1;
}
else mm[i][j][ind]=0;
}
}
for(int j=0; j<c; j++){
mm[0][j][ind]=0;
}
}
else if(way[l]=='E'){
for(int i=0; i<r; i++){
for(int j=1; j<c; j++){
if(taken[i][j]){
mm[i][j][ind]=0;
continue;
}
if((mm[i][j-1][1-ind])){
mm[i][j][ind]=1;
}
else mm[i][j][ind]=0;
}
}
for(int i=0; i<r; i++){
mm[i][0][ind]=0;
}
}
else if(way[l]=='W'){
for(int i=0; i<r; i++){
for(int j=0; j<c-1; j++){
if(taken[i][j]){
mm[i][j][ind]=0;
continue;
}
if((mm[i][j+1][1-ind])){
mm[i][j][ind]=1;
}
else mm[i][j][ind]=0;
}
}
for(int i=0; i<r; i++){
mm[i][c-1][ind]=0;
}
}
}
int ans=0;
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
if(mm[i][j][ind]){
//cout<<i<<" "<<j<<"\n";
ans++;
}
}
}
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... |