Submission #210083

#TimeUsernameProblemLanguageResultExecution timeMemory
210083pavementNautilus (BOI19_nautilus)C++17
100 / 100
185 ms856 KiB
#include <bits/stdc++.h> using namespace std; int N, M, L, T; char S; bitset<505> O[505], C1[505], C2[505], C3[505], C4[505], B[2][505]; int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> N >> M >> L; for (int i = 1; i <= N; i++) { O[i].reset(); C1[i].reset(); C2[i].reset(); C3[i].reset(); C4[i].reset(); B[0][i].reset(); B[1][i].reset(); } for (int i = 1; i <= N; i++) for (int j = 1; j <= M; j++) { cin >> S; B[0][i][j] = O[i][j] = (S == '.'); } for (int k = 1; k <= L; k++) { cin >> S; if (S == 'N') { for (int i = 1; i <= N; i++) B[k & 1][i] = B[1 - (k & 1)][i + 1]; } else if (S == 'S') { for (int i = 1; i <= N; i++) B[k & 1][i] = B[1 - (k & 1)][i - 1]; } else if (S == 'E') { for (int i = 1; i <= N; i++) B[k & 1][i] = B[1 - (k & 1)][i] << 1; } else if (S == 'W') { for (int i = 1; i <= N; i++) B[k & 1][i] = B[1 - (k & 1)][i] >> 1; } else { for (int i = 1; i <= N; i++) C1[i] = B[1 - (k & 1)][i + 1]; for (int i = 1; i <= N; i++) C2[i] = B[1 - (k & 1)][i - 1]; for (int i = 1; i <= N; i++) C3[i] = B[1 - (k & 1)][i] << 1; for (int i = 1; i <= N; i++) C4[i] = B[1 - (k & 1)][i] >> 1; for (int i = 1; i <= N; i++) B[k & 1][i] = C1[i] | C2[i] | C3[i] | C4[i]; } for (int i = 1; i <= N; i++) B[k & 1][i] &= O[i]; } for (int i = 1; i <= N; i++) T += B[L & 1][i].count(); cout << T << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...