#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fti(i, x, y) for (int i = x; i <= y; ++i)
#define ftd(i, x, y) for (int i = x; i >= y; --i)
int n, m, c;
string s;
bitset <502> sea[502], cur[502], tmp[502][5];
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
freopen("nautilus.inp", "r", stdin);
freopen("nautilus.out", "w", stdout);
cin >> n >> m >> c;
fti(i, 1, n)
{
string t; cin >> t;
fti(j, 1, m)
sea[i][j] = cur[i][j] = (t[m - j] == '.');
}
cin >> s;
for (char u : s)
{
if (u == 'E')
fti(i, 1, n) cur[i] = (cur[i] >> 1) & sea[i];
else if (u == 'W')
fti(i, 1, n) cur[i] = (cur[i] << 1) & sea[i];
else if (u == 'N')
{
fti(i, 1, n - 1) cur[i] = cur[i + 1] & sea[i];
cur[n].reset();
}
else if (u == 'S')
{
ftd(i, n, 2) cur[i] = cur[i - 1] & sea[i];
cur[1].reset();
}
else
{
fti(i, 1, n)
tmp[i][0] = (cur[i] >> 1) & sea[i],
tmp[i][1] = (cur[i] << 1) & sea[i];
fti(i, 1, n - 1)
tmp[i][2] = cur[i + 1] & sea[i];
ftd(i, n, 2)
tmp[i][3] = cur[i - 1] & sea[i];
tmp[n][2].reset();
tmp[1][3].reset();
fti(i, 1, n) cur[i] = (tmp[i][0] | tmp[i][1] | tmp[i][2] | tmp[i][3]) & sea[i];
}
}
int res = 0;
fti(i, 1, n) res += cur[i].count();
cout << res;
return 0;
}
Compilation message (stderr)
nautilus.cpp: In function 'int main()':
nautilus.cpp:15:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
15 | freopen("nautilus.inp", "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
nautilus.cpp:16:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
16 | freopen("nautilus.out", "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |