Submission #1358190

#TimeUsernameProblemLanguageResultExecution timeMemory
1358190tullNautilus (BOI19_nautilus)C++20
100 / 100
91 ms540 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define all(A) A.begin(),A.end()
#define bp '\n'
#define vp cout<<'\n';
const int N=505;
const int MNLL=-1e18;
bitset<N>dp[N],nw[N],a[N];
signed main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    int n,m,q;
    cin>>n>>m>>q;
    string k;
    for(int i=1;i<=n;++i){
        cin>>k;
        for(int j=0;j<m;++j){
            a[i][j]=(k[j]=='.');
        }
        dp[i]=a[i];
        //cout<<a[i]<<bp;
    }
    cin>>k;
    for(auto&e:k){
        for(int j=1;j<=n;++j){
            nw[j].reset();
        }
        for(int i=1;i<=n;++i){
            if(i+1<=n and e=='N')nw[i]|=dp[i+1];
            if(i-1>0 and e=='S')nw[i]|=dp[i-1];
            if( e=='W')nw[i]|=(dp[i]>>1);
            if(e=='E')nw[i]|=(dp[i]<<1);
            if(e=='?')nw[i]=(dp[i-1])|(dp[i+1])|(dp[i]<<1)|(dp[i]>>1);

        }
        for(int i=1;i<=n;++i){
            dp[i]=nw[i]&a[i];
        }
    }
    int cnt=0;
    for(int i=1;i<=n;++i){
        cnt+=dp[i].count();
    }
    cout<<cnt;
}
/*
5 9 7
...##....
..#.##..#
..#....##
.##...#..
....#....
WS?EE??

*/
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...