Submission #211812

#TimeUsernameProblemLanguageResultExecution timeMemory
211812origami100Nautilus (BOI19_nautilus)C++11
100 / 100
225 ms768 KiB
#include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int r, c, m; cin >> r >> c >> m; bitset <505> grid[505], dp[505], pre[505]; for(int i = 1; i <= r; i++){ string s; cin >> s; for(int j = 1; j <= c; j++){ if(s[j - 1] == '.'){ grid[i][j] = 1; dp[i][j] = 1; pre[i][j] = 1; }else{ grid[i][j] = 0; dp[i][j] = 0; pre[i][j] = 0; } //cout << dp[i][j]; } //cout << '\n'; } //cout << '\n'; for(int i = 0; i < m; i++){ char ins; cin >> ins; switch(ins){ case 'N': for(int j = 1; j <= r; j++){ dp[j] = pre[j + 1] & grid[j]; } break; case 'S': for(int j = 1; j <= r; j++){ dp[j] = pre[j - 1] & grid[j]; } break; case 'W': for(int j = 1; j <= r; j++){ dp[j] = (pre[j] >> 1) & grid[j]; } break; case 'E': for(int j = 1; j <= r; j++){ dp[j] = (pre[j] << 1) & grid[j]; } break; case '?': for(int j = 1; j <= r; j++){ dp[j] = (pre[j + 1] | pre[j - 1] | (pre[j] << 1) | (pre[j] >> 1)) & grid[j]; } break; } for(int j = 1; j <= r; j++){ pre[j] = dp[j]; } /*for(int j = 1; j <= r; j++){ for(int k = 1; k <= c; k++){ cout << dp[j][k]; } cout << '\n'; } cout << '\n';*/ } int cnt = 0; for(int i = 1; i <= r; i++){ for(int j = 1; j <= c; j++){ if(dp[i][j] == 1) cnt++; } } cout << cnt; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...