Submission #1203811

#TimeUsernameProblemLanguageResultExecution timeMemory
1203811vicvicNautilus (BOI19_nautilus)C++20
100 / 100
158 ms564 KiB
#include <bits/stdc++.h> using namespace std; const int NMAX=500; int n, m, c; bitset <NMAX+5> mat[NMAX+5]; bitset <NMAX+5> dp[2][NMAX+5]; int main () { ios_base :: sync_with_stdio (0); cin.tie (nullptr); cin >> n >> m >> c; for (int i=1;i<=n;i++) { string input; cin >> input; for (int j=1;j<=m;j++) { mat[i][j]=(input[j-1]=='#'?0:1); dp[0][i][j]=(input[j-1]=='#'?0:1); } } string input; cin >> input; int t=0; for (int i=1;i<=c;i++) { t=!t; for (int i=1;i<=n;i++) { dp[t][i]=0; } char ch=input[i-1]; if (ch=='E' || ch=='?') { for (int i=1;i<=n;i++) { dp[t][i] |=((dp[!t][i] << 1) & mat[i]); } } if (ch=='W' || ch=='?') { for (int i=1;i<=n;i++) { dp[t][i] |=((dp[!t][i] >> 1) & mat[i]); } } if (ch=='N' || ch=='?') { for (int i=1;i<=n;i++) { dp[t][i] |=(dp[!t][i+1] & mat[i]); } } if (ch=='S' || ch=='?') { for (int i=1;i<=n;i++) { dp[t][i] |=(dp[!t][i-1] & mat[i]); } } } int rez=0; for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) { rez +=(dp[t][i][j]==1); } } cout << rez; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...