Submission #1305381

#TimeUsernameProblemLanguageResultExecution timeMemory
1305381vehamNautilus (BOI19_nautilus)C++20
66 / 100
1093 ms832 KiB
#include <bits/stdc++.h> using namespace std; typedef string str; typedef vector<str> vs; vector<bitset<500>> nesa(vector<bitset<500>> &G, vector<bitset<500>> &P, char dir, int R, int C){ vector<bitset<500>> N(R); if(dir == 'N' || dir == '?'){ for(int i = 1;i < R;i++){ N[i-1] |= P[i]; } } if(dir == 'S' || dir == '?'){ for(int i = 0;i < R-1;i++){ N[i+1] |= P[i]; } } if(dir == 'W' || dir == '?'){ for(int i = 0;i < R;i++){ N[i] |= P[i]>>1; } } if(dir == 'E' || dir == '?'){ for(int i = 0;i < R;i++){ N[i] |= P[i]<<1; } } for(int i = 0;i < R;i++){ for(int j = 0;j < C;j++){ N[i] &= G[i]; } } return N; } int main(){ int R,C,M; cin >> R >> C >> M; vs G(R); for(int i = 0;i < R;i++) cin >> G[i]; str D; cin >> D; vector<bitset<500>> G2(R),P2; for(int i = 0;i < R;i++) for(int j = 0;j < C;j++) G2[i][j] = G[i][j] == '.'; P2 = G2; for(char dir : D) P2 = nesa(G2,P2,dir,R,C); int ans = 0; for(int i = 0;i < R;i++) ans += P2[i].count(); cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...