Submission #1213440

#TimeUsernameProblemLanguageResultExecution timeMemory
1213440minhpkNautilus (BOI19_nautilus)C++20
100 / 100
210 ms157208 KiB
#include <bits/stdc++.h> using namespace std; bitset<505> dp[505][5005]; bitset<505> sea[505]; string s; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int a,b,c; cin >> a >> b >> c; for (int i=a;i>=1;i--){ for (int j=b;j>=1;j--){ char c; cin >> c; if (c=='.'){ sea[i][j]=1; }else{ sea[i][j]=0; } } } string s; cin >> s; s='#'+s; for (int i=1;i<=a;i++){ dp[i][0]=sea[i]; } for (int j=1;j<=c;j++){ if (s[j]=='N'){ for (int i=1;i<=a;i++){ dp[i][j]= dp[i-1][j-1]&sea[i]; } }else if (s[j]=='S'){ for (int i=1;i<=a;i++){ dp[i][j]= dp[i+1][j-1]&sea[i]; } }else if (s[j]=='W'){ for (int i=1;i<=a;i++){ dp[i][j]= (dp[i][j-1]<<1)&sea[i]; } }else if (s[j]=='E'){ for (int i=1;i<=a;i++){ dp[i][j]= (dp[i][j-1]>>1)&sea[i]; } }else{ for (int i=1;i<=a;i++){ dp[i][j]= ((dp[i][j-1]>>1)|(dp[i][j-1]<<1)|dp[i+1][j-1]|dp[i-1][j-1])&sea[i]; } } } int ans=0; for (int i=1;i<=a;i++){ for (int j=1;j<=b;j++){ ans+=dp[i][c][j]; } } cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...