Submission #207175

#TimeUsernameProblemLanguageResultExecution timeMemory
207175brcodeNautilus (BOI19_nautilus)C++14
100 / 100
198 ms1016 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; const int MAXN = 510; int n,m,k; char grid[MAXN][MAXN]; bitset<MAXN> dp[MAXN],temp[MAXN],arr[MAXN]; int main(){ cin>>n>>m>>k; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ char x; cin>>x; grid[i][j] = x; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(grid[i][j] =='.'){ dp[i][j] = 1; arr[i][j] = 1; } } } for(int j=1;j<=k;j++){ char x; cin>>x; if(x == 'N'||x=='?'){ for(int i=1;i<n;i++){ temp[i] = dp[i+1]; } } if(x=='S'||x=='?'){ for(int i=2;i<=n;i++){ temp[i] |= dp[i-1]; } } if(x=='E'||x=='?'){ for(int i=1;i<=n;i++){ temp[i]|=(dp[i]<<1); } } if(x=='W'||x=='?'){ for(int i=1;i<=n;i++){ temp[i]|=(dp[i]>>1); } } for(int i=1;i<=n;i++){ dp[i] = temp[i]&(arr[i]); temp[i].reset(); } } int ans = 0; for(int i=1;i<=n;i++){ ans+=dp[i].count(); } cout<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...