Submission #529967

#TimeUsernameProblemLanguageResultExecution timeMemory
529967c28dnv9q3Nautilus (BOI19_nautilus)C++17
100 / 100
203 ms644 KiB
#include <bits/stdc++.h> std::bitset<505> map[505]; std::bitset<505> pos[505]; std::bitset<505> _pos[505]; std::vector<char> cmds; int main () { int R, C, M; std::cin >> R >> C >> M; for(int row = 1; row <= R; row++) for(int col = C; col >= 1; col--) { char c = ' '; while(c != '#' && c != '.') c = std::getchar(); map[row][col] = (c == '#') ? 0 : 1; pos[row][col] = (c == '#') ? 0 : 1; } for(int i = 0; i < M; i++) { char c = ' '; while(c != 'N' && c != 'E' && c != 'S' && c != 'W' && c != '?') c = std::getchar(); cmds.push_back(c); } for(int cmd = 0; cmd < M; cmd++) { switch(cmds[cmd]) { case 'N': for(int i = 1; i <= R; i++) pos[i] = pos[i+1] & map[i]; break; case 'E': for(int i = 1; i <= R; i++) pos[i] = (pos[i] >> 1) & map[i]; break; case 'S': for(int i = R; i >= 1; i--) pos[i] = pos[i-1] & map[i]; break; case 'W': for(int i = 1; i <= R; i++) pos[i] = (pos[i] << 1) & map[i]; break; case '?': for(int i = 1; i <= R; i++) _pos[i] = pos[i]; for(int i = 1; i <= R; i++) pos[i] = (_pos[i+1] & map[i]) | ((_pos[i] << 1) & map[i]) | (_pos[i-1] & map[i]) | ((_pos[i] >> 1) & map[i]); break; } // std::cout << cmds[cmd] << "\n"; // for(int row = 1; row <= R; row++) // { // for(int col = C; col >= 1; col--) // { // if(map[row][col]) // std::cout << pos[row][col]; // else // std::cout << "#"; // } // std::cout << "\n"; // } // std::cout << "\n"; } int sum = 0; for(int r = 1; r <= R; r++) sum += pos[r].count(); std::cout << sum; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...