제출 #646577

#제출 시각아이디문제언어결과실행 시간메모리
646577alextodoranNautilus (BOI19_nautilus)C++17
100 / 100
126 ms728 KiB
/** ____ ____ ____ ____ ____ ||a |||t |||o |||d |||o || ||__|||__|||__|||__|||__|| |/__\|/__\|/__\|/__\|/__\| **/ #include <bits/stdc++.h> using namespace std; typedef long long ll; int main () { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int N, M, K; cin >> N >> M >> K; bitset <500> sea[N]; for (int i = 0; i < N; i++) { string row; cin >> row; for (int j = 0; j < M; j++) { sea[i][j] = (row[j] == '.'); } } bitset <500> dp[2][N]; for (int i = 0; i < N; i++) { dp[0][i] = sea[i]; } string path; cin >> path; for (int k = 1; k <= K; k++) { if (path[k - 1] == '?') { for (int i = 0; i < N; i++) { dp[k & 1][i] = ((dp[(k - 1) & 1][i] >> 1) | (dp[(k - 1) & 1][i] << 1)); if (i > 0) { dp[k & 1][i] |= dp[(k - 1) & 1][i - 1]; } if (i < N - 1) { dp[k & 1][i] |= dp[(k - 1) & 1][i + 1]; } } } else { int di = 0, dj = 0; if (path[k - 1] == 'N') { dp[k & 1][N - 1].reset(); for (int i = 0; i < N - 1; i++) { dp[k & 1][i] = dp[(k - 1) & 1][i + 1]; } } else if (path[k - 1] == 'E') { for (int i = 0; i < N; i++) { dp[k & 1][i] = (dp[(k - 1) & 1][i] << 1); } } else if (path[k - 1] == 'S') { dp[k & 1][0].reset(); for (int i = 1; i < N; i++) { dp[k & 1][i] = dp[(k - 1) & 1][i - 1]; } } else { for (int i = 0; i < N; i++) { dp[k & 1][i] = (dp[(k - 1) & 1][i] >> 1); } } } for (int i = 0; i < N; i++) { dp[k & 1][i] &= sea[i]; } } int answer = 0; for (int i = 0; i < N; i++) { answer += dp[K & 1][i].count(); } cout << answer << "\n"; return 0; }

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

nautilus.cpp: In function 'int main()':
nautilus.cpp:49:17: warning: unused variable 'di' [-Wunused-variable]
   49 |             int di = 0, dj = 0;
      |                 ^~
nautilus.cpp:49:25: warning: unused variable 'dj' [-Wunused-variable]
   49 |             int di = 0, dj = 0;
      |                         ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...