Submission #1189074

#TimeUsernameProblemLanguageResultExecution timeMemory
1189074MoonnNautilus (BOI19_nautilus)C++20
66 / 100
1095 ms4420 KiB
#pragma GCC optimize("O3")//tle?
#include<bits/stdc++.h>//
#define ll long long
#define endl "\n"
#define AI ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
vector<ll>pr;
vector<ll>ma;
void solve()
{
    ll r,c,x,m,i,j;
    cin>>r>>c>>m;
    ll dp[r][c][2];
    char ar[r][c];
    string yol;
    for(i=0;i<r;i++)
    {
        for(j=0;j<c;j++)
        {
            cin>>ar[i][j];
            dp[i][j][0]=1;
            if(ar[i][j]=='#')
            dp[i][j][0]=0;
        }
    }
    cin>>yol;
    ll say=0;
    for(x=0;x<m;x++)
    {
        say=0;
        for(i=0;i<r;i++)
        {
            for(j=0;j<c;j++)
            {
                dp[i][j][(x+1)%2]=0;
                if(ar[i][j]=='#')
                continue;
                if(yol[x]=='?')
                {
                    if(i!=0 and dp[i-1][j][x%2])
                    dp[i][j][(x+1)%2]=1;
                    else if(i!=r-1 and dp[i+1][j][x%2])
                    dp[i][j][(x+1)%2]=1;
                    else if(j!=0 and dp[i][j-1][x%2])
                    dp[i][j][(x+1)%2]=1;
                    else if(j!=c-1 and dp[i][j+1][x%2])
                    dp[i][j][(x+1)%2]=1;
                }
                else if(yol[x]=='N')
                {
                    if(i!=r-1 and dp[i+1][j][x%2])
                    dp[i][j][(x+1)%2]=1;
                }
                else if(yol[x]=='S')
                {
                    if(i!=0 and dp[i-1][j][x%2])
                    dp[i][j][(x+1)%2]=1;
                }
                else if(yol[x]=='W')
                {
                    if(j!=c-1 and dp[i][j+1][x%2])
                    dp[i][j][(x+1)%2]=1;
                }
                else if(yol[x]=='E')
                {
                    if(j!=0 and dp[i][j-1][x%2])
                    dp[i][j][(x+1)%2]=1;
                }
                if(dp[i][j][(x+1)%2])
                say++;
            }
        }
    }
    cout<<say;
}
int main()
{
    AI
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    solve();
}//3 9 5 14
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...