Submission #242856

#TimeUsernameProblemLanguageResultExecution timeMemory
242856oolimryNautilus (BOI19_nautilus)C++14
100 / 100
188 ms888 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 501; bitset<MAXN> cur[MAXN]; bitset<MAXN> temp[MAXN]; bitset<MAXN> walls[MAXN]; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int rows, cols, K; cin >> rows >> cols >> K; for(int r = 0;r < rows;r++){ string s; cin >> s; for(int c = 0;c < cols;c++){ int bit = (s[c] == '.'); cur[r][c] = bit; walls[r][c] = bit; } } string command; cin >> command; for(char c : command){ if(c == 'W'){ for(int r = 0;r < rows;r++) cur[r] >>= 1; } if(c == 'E'){ for(int r = 0;r < rows;r++) cur[r] <<= 1; } if(c == 'N'){ for(int r = 0;r < rows-1;r++) cur[r] = cur[r+1]; for(int c = 0;c < cols;c++) cur[rows-1][c] = 0; } if(c == 'S'){ for(int r = rows-1;r >= 1;r--) cur[r] = cur[r-1]; for(int c = 0;c < cols;c++) cur[0][c] = 0; } if(c == '?'){ for(int r = 0;r < rows;r++) temp[r] = cur[r]; for(int r = 0;r < rows;r++){ cur[r] = (temp[r] << 1) | (temp[r] >> 1); if(r != 0) cur[r] |= temp[r-1]; if(r != rows-1) cur[r] |= temp[r+1]; } } for(int r = 0;r < rows;r++) cur[r] &= walls[r]; } int ans = 0; for(int r = 0;r < rows;r++){ for(int c = 0;c < cols;c++){ ans += cur[r][c]; } } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...