제출 #1203806

#제출 시각아이디문제언어결과실행 시간메모리
1203806vicvicNautilus (BOI19_nautilus)C++20
0 / 100
1 ms320 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]=='#'?1:0); 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; 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=='?') { dp[t][n]=0; for (int i=1;i<n;i++) { dp[t][i] |=(dp[!t][i+1] & ~mat[i]); } } if (ch=='S' || ch=='?') { for (int i=2;i<=n;i++) { dp[t][i] |=(dp[!t][i-1] & ~mat[i]); } dp[t][1]=0; } } 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...