Submission #577833

# Submission time Handle Problem Language Result Execution time Memory
577833 2022-06-15T09:48:25 Z berr Awesome Arrowland Adventure (eJOI19_adventure) C++17
34 / 100
5 ms 4356 KB
#include <bits/stdc++.h>
using namespace std;
int dp[505][505][4], grid[504][504];

int n, m;

array<int, 4> c{0, 1, 0, -1};
array<int, 4> b{-1, 0, 1, 0};



int f(int x, int y, int z)
{   


    if(x==n-1&&y==m-1) return 0;

    if(x<0||x>=n||y>=m||y<0) return 1e9;

    if(grid[x][y]==-1) return 1e9;

    if(dp[x][y][z]!=-1) return dp[x][y][z];


    dp[x][y][z]=1e9;


    int diff=((((z-grid[x][y]+4)%4)));

    for(int i=0; i<4; i++)
    {

        
        if(z-i!=2&&z-i!=-2)
        {
        int xe=x+b[z], ye=y+c[z];
        
        int p=f(xe, ye, i);

        if(dp[x][y][z]>p+diff)
        dp[x][y][z]=p+diff;
        }

    }
    return dp[x][y][z];
}
int32_t main()
{
    ios_base::sync_with_stdio(false); cin.tie(0);

    cin>>n>>m;


    f(1, 2, 0);
    for(int i=0; i<n; i++)
    {
        for(int l=0; l<m; l++)
        {
            char x; cin>>x;
            if(x=='N') grid[i][l]=0;
            if(x=='E') grid[i][l]=1;
            if(x=='S') grid[i][l]=2;
            if(x=='W') grid[i][l]=3;
            if(x=='X') grid[i][l]=-1; 

            dp[i][l][0]=dp[i][l][1]=dp[i][l][2]=dp[i][l][3]=-1;
        }
    }


    for(int i=0; i<505; i++)
        for(int l=0; l<505; l++)
            dp[i][l][0]=dp[i][l][1]=dp[i][l][2]=dp[i][l][3]=-1;



        int h=1e9;

     h=min({h, f(0, 0,0)});
        for(int i=0; i<505; i++)
        for(int l=0; l<505; l++)
            dp[i][l][0]=dp[i][l][1]=dp[i][l][2]=dp[i][l][3]=-1;


    h=min(h, f(0, 0, 1));
        for(int i=0; i<505; i++)
        for(int l=0; l<505; l++)
            dp[i][l][0]=dp[i][l][1]=dp[i][l][2]=dp[i][l][3]=-1;

    h=min(h, f(0, 0, 3));
        for(int i=0; i<505; i++)
        for(int l=0; l<505; l++)
            dp[i][l][0]=dp[i][l][1]=dp[i][l][2]=dp[i][l][3]=-1;

        h=min(h ,f(0, 0, 2));



    if(h<1e9) cout<<h;
    else cout<<-1;








}

Compilation message

adventure.cpp: In function 'int32_t main()':
adventure.cpp:71:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   71 |     for(int i=0; i<505; i++)
      |     ^~~
adventure.cpp:77:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   77 |         int h=1e9;
      |         ^~~
# Verdict Execution time Memory Grader output
1 Correct 4 ms 4356 KB Output is correct
2 Correct 4 ms 4308 KB Output is correct
3 Correct 4 ms 4308 KB Output is correct
4 Correct 5 ms 4308 KB Output is correct
5 Correct 4 ms 4308 KB Output is correct
6 Correct 4 ms 4308 KB Output is correct
7 Correct 3 ms 4308 KB Output is correct
8 Correct 3 ms 4308 KB Output is correct
9 Correct 3 ms 4308 KB Output is correct
10 Correct 3 ms 4308 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 4356 KB Output is correct
2 Correct 4 ms 4308 KB Output is correct
3 Correct 4 ms 4308 KB Output is correct
4 Correct 5 ms 4308 KB Output is correct
5 Correct 4 ms 4308 KB Output is correct
6 Correct 4 ms 4308 KB Output is correct
7 Correct 3 ms 4308 KB Output is correct
8 Correct 3 ms 4308 KB Output is correct
9 Correct 3 ms 4308 KB Output is correct
10 Correct 3 ms 4308 KB Output is correct
11 Correct 3 ms 4308 KB Output is correct
12 Correct 4 ms 4308 KB Output is correct
13 Correct 4 ms 4308 KB Output is correct
14 Correct 4 ms 4316 KB Output is correct
15 Correct 3 ms 4308 KB Output is correct
16 Correct 3 ms 4308 KB Output is correct
17 Correct 5 ms 4308 KB Output is correct
18 Correct 4 ms 4308 KB Output is correct
19 Correct 3 ms 4308 KB Output is correct
20 Correct 3 ms 4308 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4308 KB Output is correct
2 Correct 3 ms 4308 KB Output is correct
3 Correct 3 ms 4308 KB Output is correct
4 Correct 3 ms 4324 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4308 KB Output is correct
2 Incorrect 3 ms 4308 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 4356 KB Output is correct
2 Correct 4 ms 4308 KB Output is correct
3 Correct 4 ms 4308 KB Output is correct
4 Correct 5 ms 4308 KB Output is correct
5 Correct 4 ms 4308 KB Output is correct
6 Correct 4 ms 4308 KB Output is correct
7 Correct 3 ms 4308 KB Output is correct
8 Correct 3 ms 4308 KB Output is correct
9 Correct 3 ms 4308 KB Output is correct
10 Correct 3 ms 4308 KB Output is correct
11 Correct 3 ms 4308 KB Output is correct
12 Correct 4 ms 4308 KB Output is correct
13 Correct 4 ms 4308 KB Output is correct
14 Correct 4 ms 4316 KB Output is correct
15 Correct 3 ms 4308 KB Output is correct
16 Correct 3 ms 4308 KB Output is correct
17 Correct 5 ms 4308 KB Output is correct
18 Correct 4 ms 4308 KB Output is correct
19 Correct 3 ms 4308 KB Output is correct
20 Correct 3 ms 4308 KB Output is correct
21 Correct 3 ms 4308 KB Output is correct
22 Correct 3 ms 4308 KB Output is correct
23 Correct 3 ms 4308 KB Output is correct
24 Correct 3 ms 4324 KB Output is correct
25 Correct 3 ms 4308 KB Output is correct
26 Incorrect 3 ms 4308 KB Output isn't correct
27 Halted 0 ms 0 KB -