Submission #535253

#TimeUsernameProblemLanguageResultExecution timeMemory
535253groshiNautilus (BOI19_nautilus)C++17
100 / 100
170 ms1092 KiB
#include<iostream> #include<bitset> using namespace std; bitset<600> dp[2][600],usun[600]; char t[600][600]; int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); int n,m,k; cin>>n>>m>>k; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>t[i][j]; if(t[i][j]=='.') { dp[1][i][j]=1; usun[i][j]=1; } } } string s; cin>>s; for(int i=0;i<k;i++) { for(int j=1;j<=n;j++) dp[i%2][j]&=0; if(s[i]=='?' || s[i]=='N') for(int j=1;j<n;j++) dp[i%2][j]|=dp[!(i%2)][j+1]; if(s[i]=='?' || s[i]=='S') for(int j=2;j<=n;j++) dp[i%2][j]|=dp[!(i%2)][j-1]; if(s[i]=='W' || s[i]=='?') for(int j=1;j<=n;j++) dp[i%2][j]|=(dp[!(i%2)][j]>>1); if(s[i]=='E' || s[i]=='?') for(int j=1;j<=n;j++) dp[i%2][j]|=(dp[!(i%2)][j]<<1); for(int j=1;j<=n;j++) dp[i%2][j]&=usun[j]; } int wynik=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(dp[(k-1)%2][i][j]) wynik++; cout<<wynik; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...