Submission #1092917

#TimeUsernameProblemLanguageResultExecution timeMemory
1092917juicyNautilus (BOI19_nautilus)C++17
100 / 100
120 ms784 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "debug.h" #else #define debug(...) 42 #endif int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int r, c, m; cin >> r >> c >> m; vector<bitset<500>> b(r), mp(r), nxt(r); for (int i = 0; i < r; ++i) { for (int j = 0; j < c; ++j) { char x; cin >> x; if (x == '.') { b[i].set(j); mp[i].set(j); } } } while (m--) { char c; cin >> c; for (int i = 0; i < r; ++i) { if (c == 'N') { if (i + 1 == r) { b[i].reset(); } else { b[i] = b[i + 1] & mp[i]; } } else if (c == 'W') { b[i] = b[i] >> 1 & mp[i]; } else if (c == 'E') { b[i] = b[i] << 1 & mp[i]; } else if (c == '?') { nxt[i].reset(); nxt[i] = b[i] << 1 | b[i] >> 1; if (i) { nxt[i] |= b[i - 1]; } if (i + 1 < r) { nxt[i] |= b[i + 1]; } nxt[i] &= mp[i]; } } if (c == 'S') { for (int i = r - 1; ~i; --i) { if (!i) { b[i].reset(); } else { b[i] = b[i - 1] & mp[i]; } } } else if (c == '?') { for (int i = 0; i < r; ++i) { b[i] = nxt[i]; } } } int res = 0; for (int i = 0; i < r; ++i) { res += b[i].count(); } cout << res; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...