Submission #1165924

#TimeUsernameProblemLanguageResultExecution timeMemory
1165924LeonidCukNautilus (BOI19_nautilus)C++20
100 / 100
61 ms508 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
int main()
{
    int n,m,k;
    char a;
    cin>>n>>m>>k;
    vector<bitset<500>>dp(n),v(n);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cin>>a;
            if(a=='#')
            {
                dp[i][j]=false;
                v[i][j]=false;
            }
            else
            {
                dp[i][j]=true;
                v[i][j]=true;
            }
        }
    }
    for(int j=0;j<k;j++)
    {
        cin>>a;
        vector<bitset<500>>temp(n);
        if(a=='W'||a=='?')
        {
            for(int i=0;i<n;i++)
            {
                temp[i]|=(dp[i]>>1);
            }
        }
        if(a=='E'||a=='?')
        {
            for(int i=0;i<n;i++)
            {
                temp[i]|=(dp[i]<<1);
            }
        }
        if(a=='N'||a=='?')
        {
            for(int i=0;i<n-1;i++)
            {
                temp[i]|=(dp[i+1]);
            }
        }
        if(a=='S'||a=='?')
        {
            for(int i=1;i<n;i++)
            {
                temp[i]|=(dp[i-1]);
            }
        }
        for(int i=0;i<n;i++)dp[i]=v[i]&temp[i];
    }
    int bb=0;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            if(dp[i][j])bb++;
        }
    }
    cout<<bb;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...