제출 #529711

#제출 시각아이디문제언어결과실행 시간메모리
529711c28dnv9q3Nautilus (BOI19_nautilus)C++17
66 / 100
1097 ms1040 KiB
#include <cstdio> #include <iostream> const int N_MAX = 512; const int M_MAX = 5005; int R, C, M; bool map[N_MAX][N_MAX]; bool cur[2][N_MAX][N_MAX]; void printcur(int k) { for (int i = 0; i <= R + 1; i++) { for (int j = 0; j <= C + 1; j++) { putchar(cur[k][i][j] ? '#' : '.'); } putchar('\n'); } putchar('\n'); } int main() { std::cin >> R >> C >> M; for (int i = 0; i < R; i++) { std::string s; std::cin >> s; for (int j = 0; j < C; j++) { map[i+1][j+1] = s[j] == '.'; } } /*for (int i = 0; i < R + 2; i++) { map[i][0] = false; map[i][C+1] = false; } for (int j = 0; j < C + 2; j++) { map[0][j] = false; map[R+1][j] = false; }*/ int k = 0; for (int i = 1; i <= R; i++) { for (int j = 1; j <= C; j++) { cur[k][i][j] = map[i][j]; } } //printf("Map at beginning\n"); //printcur(k); std::string instr; std::cin >> instr; for (int i = 0; i < instr.size(); i++) { char c = instr[i]; k = 1-k; //printf("INSTRUCTION %c (k=%d)\n", c, k); switch (c) { case 'N': for (int i = 1; i <= R; i++) { for (int j = 1; j <= C; j++) { cur[k][i][j] = cur[1-k][i+1][j] && map[i][j]; } } break; case 'E': for (int i = 1; i <= R; i++) { for (int j = 1; j <= C; j++) { cur[k][i][j] = cur[1-k][i][j-1] && map[i][j]; } } break; case 'S': for (int i = 1; i <= R; i++) { for (int j = 1; j <= C; j++) { cur[k][i][j] = cur[1-k][i-1][j] && map[i][j]; } } break; case 'W': for (int i = 1; i <= R; i++) { for (int j = 1; j <= C; j++) { cur[k][i][j] = cur[1-k][i][j+1] && map[i][j]; } } break; case '?': for (int i = 1; i <= R; i++) { for (int j = 1; j <= C; j++) { cur[k][i][j] = ( cur[1-k][i-1][j] || cur[1-k][i+1][j] || cur[1-k][i][j-1] || cur[1-k][i][j+1] ) && map[i][j]; } } break; } //printcur(k); } int num = 0; for (int i = 1; i <= R; i++) { for (int j = 1; j <= C; j++) { num += cur[k][i][j] ? 1 : 0; } } std::cout << num << std::endl; }

컴파일 시 표준 에러 (stderr) 메시지

nautilus.cpp: In function 'int main()':
nautilus.cpp:54:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |   for (int i = 0; i < instr.size(); i++) {
      |                   ~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...