Submission #897832

#TimeUsernameProblemLanguageResultExecution timeMemory
897832maxFedorchukNautilus (BOI19_nautilus)C++17
100 / 100
566 ms2132 KiB

#include <bits/stdc++.h>
using namespace std;

const long long MX=1010;

bitset < MX*MX > ok;
bitset < MX*MX > dp;

int main()
{
    cin.tie(0);
    ios_base::sync_with_stdio(0);

    int n,m,k;
    cin>>n>>m>>k;

    char zn;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cin>>zn;
            if(zn=='.')
            {
                ok[i*MX+j]=1;
            }
        }
    }

    dp=ok;

    string s;
    cin>>s;

    for(auto zr:s)
    {
        if(zr=='N')
        {
            dp=(dp>>MX);
        }

        if(zr=='S')
        {
            dp=(dp<<MX);
        }

        if(zr=='W')
        {
            dp=(dp>>1);
        }

        if(zr=='E')
        {
            dp=(dp<<1);
        }

        if(zr=='?')
        {
            dp=((dp<<MX)|(dp>>MX)|(dp<<1)|(dp>>1));
        }

        dp&=ok;
    }

    cout<<dp.count()<<"\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...