# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
748391 | 2023-05-26T08:18:00 Z | vjudge1 | Nautilus (BOI19_nautilus) | C++17 | 1 ms | 340 KB |
#include <iostream> #include <bitset> using namespace std; const int MAXN = 1005; const int MAXM = 1005; const int MAXLEN = 1005; const int MAXDIRS = 4; const int DR[MAXDIRS] = {-1, 0, 1, 0}; const int DC[MAXDIRS] = {0, 1, 0, -1}; int N, M; bitset<MAXN*MAXM> can_submarine_be_here, possible_locations; int main() { cin >> N >> M; for (int i = 0; i < N; ++i) { string line; cin >> line; for (int j = 0; j < M; ++j) { if (line[j] == '.') { can_submarine_be_here.set(i*M+j); possible_locations.set(i*M+j); } } } string signals; cin >> signals; for (int i = 0; i < signals.size(); ++i) { char d = signals[i]; if (d == 'N') d = 0; else if (d == 'E') d = 1; else if (d == 'S') d = 2; else if (d == 'W') d = 3; else continue; bitset<MAXN*MAXM> new_possible_locations; for (int j = possible_locations._Find_first(); j != possible_locations.size(); j = possible_locations._Find_next(j)) { int r = j / M; int c = j % M; int nr = r + DR[d]; int nc = c + DC[d]; if (nr >= 0 && nr < N && nc >= 0 && nc < M && can_submarine_be_here[nr*M+nc]) { new_possible_locations.set(nr*M+nc); } } possible_locations = new_possible_locations; } cout << possible_locations.count()-2; return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |