Submission #1239398

#TimeUsernameProblemLanguageResultExecution timeMemory
1239398nikolashamiNautilus (BOI19_nautilus)C++20
100 / 100
30 ms332 KiB
#include<bits/stdc++.h> using namespace std; using ll=long long; #pragma GCC optimize("O3") const ll N=503; bitset<N>a[N],f[N],nf[N]; signed main(){ ios::sync_with_stdio(0); cin.tie(0); ll n,m,k; cin>>n>>m>>k; for(int i=0;i<=n+1;++i) f[i].reset(),nf[i].reset(); for(int i=1;i<=n;++i){ for(int j=1;j<=m;++j){ char c;cin>>c; f[i][j]=a[i][j]=(c=='.'); } } string s; cin>>s; s='.'+s; for(int j=1;j<=k;++j){ for(int i=1;i<=n;++i){ if(s[j]=='N')nf[i]|=a[i]&f[i+1]; if(s[j]=='E')nf[i]|=a[i]&(f[i]<<1); if(s[j]=='S')nf[i]|=a[i]&f[i-1]; if(s[j]=='W')nf[i]|=a[i]&(f[i]>>1); if(s[j]=='?')nf[i]|=a[i]&(f[i+1]|(f[i]<<1)|f[i-1]|(f[i]>>1)); } for(int i=1;i<=n;++i) f[i]=nf[i],nf[i].reset(); } ll ans=0; for(int i=1;i<=n;++i) ans+=f[i].count(); cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...