Submission #677690

#TimeUsernameProblemLanguageResultExecution timeMemory
677690vjudge1Nautilus (BOI19_nautilus)C++17
100 / 100
145 ms716 KiB
/* 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...