This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/*
Author : DeMen100ns (a.k.a Vo Khac Trieu)
School : VNU-HCM High school for the Gifted
fuck you adhoc
*/
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N = 2e5 + 5;
const long long INF = 1e18 + 7;
const int MAXA = 1e9;
const int B = sqrt(N) + 5;
bitset <505> bs[2][505];
bitset <505> a[505];
void solve()
{
int n, m, r; cin >> n >> m >> r;
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= m; ++j){
char c; cin >> c;
if (c == '.') a[i].set(j);
}
bs[0][i] = a[i];
}
string s; cin >> s;
int cur = 0;
for(char c : s){
if (c == 'W' || c == '?'){
for(int i = 1; i <= n; ++i){
bs[cur ^ 1][i] |= (bs[cur][i] >> 1);
}
}
if (c == 'E' || c == '?'){
for(int i = 1; i <= n; ++i){
bs[cur ^ 1][i] |= (bs[cur][i] << 1);
}
}
if (c == 'N' || c == '?'){
for(int i = 2; i <= n; ++i){
bs[cur ^ 1][i - 1] |= (bs[cur][i]);
}
}
if (c == 'S' || c == '?'){
for(int i = 2; i <= n; ++i){
bs[cur ^ 1][i] |= (bs[cur][i - 1]);
}
}
for(int i = 1; i <= n; ++i){
bs[cur ^ 1][i] &= a[i];
bs[cur][i].reset();
}
cur ^= 1;
}
int ans = 0;
for(int i = 1; i <= n; ++i){
ans += bs[cur][i].count();
}
cout << ans;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
// freopen("codeforces.inp","r",stdin);
// freopen("codeforces.out","w",stdout);
int t = 1; // cin >> t;
while (t--)
{
solve();
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |