답안 #577824

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
577824 2022-06-15T09:39:56 Z berr Awesome Arrowland Adventure (eJOI19_adventure) C++17
34 / 100
4 ms 4308 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(x+b[z], y+c[z], 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=min({ f(0, 0,0), f(0, 0, 1), f(0, 0, 3), f(0, 0, 2)});



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








}

Compilation message

adventure.cpp: In function 'int f(int, int, int)':
adventure.cpp:36:13: warning: unused variable 'xe' [-Wunused-variable]
   36 |         int xe=x+b[z], ye=y+c[z];
      |             ^~
adventure.cpp:36:24: warning: unused variable 'ye' [-Wunused-variable]
   36 |         int xe=x+b[z], ye=y+c[z];
      |                        ^~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4308 KB Output is correct
2 Correct 2 ms 4308 KB Output is correct
3 Correct 3 ms 4308 KB Output is correct
4 Correct 3 ms 4308 KB Output is correct
5 Correct 3 ms 4308 KB Output is correct
6 Correct 2 ms 4308 KB Output is correct
7 Correct 3 ms 4308 KB Output is correct
8 Correct 3 ms 4228 KB Output is correct
9 Correct 2 ms 4308 KB Output is correct
10 Correct 2 ms 4308 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4308 KB Output is correct
2 Correct 2 ms 4308 KB Output is correct
3 Correct 3 ms 4308 KB Output is correct
4 Correct 3 ms 4308 KB Output is correct
5 Correct 3 ms 4308 KB Output is correct
6 Correct 2 ms 4308 KB Output is correct
7 Correct 3 ms 4308 KB Output is correct
8 Correct 3 ms 4228 KB Output is correct
9 Correct 2 ms 4308 KB Output is correct
10 Correct 2 ms 4308 KB Output is correct
11 Correct 2 ms 4308 KB Output is correct
12 Correct 2 ms 4308 KB Output is correct
13 Correct 3 ms 4308 KB Output is correct
14 Correct 2 ms 4308 KB Output is correct
15 Correct 3 ms 4308 KB Output is correct
16 Correct 2 ms 4308 KB Output is correct
17 Correct 3 ms 4308 KB Output is correct
18 Correct 2 ms 4308 KB Output is correct
19 Correct 2 ms 4308 KB Output is correct
20 Correct 2 ms 4308 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4308 KB Output is correct
2 Correct 4 ms 4260 KB Output is correct
3 Correct 3 ms 4308 KB Output is correct
4 Correct 3 ms 4308 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4308 KB Output is correct
2 Incorrect 2 ms 4220 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4308 KB Output is correct
2 Correct 2 ms 4308 KB Output is correct
3 Correct 3 ms 4308 KB Output is correct
4 Correct 3 ms 4308 KB Output is correct
5 Correct 3 ms 4308 KB Output is correct
6 Correct 2 ms 4308 KB Output is correct
7 Correct 3 ms 4308 KB Output is correct
8 Correct 3 ms 4228 KB Output is correct
9 Correct 2 ms 4308 KB Output is correct
10 Correct 2 ms 4308 KB Output is correct
11 Correct 2 ms 4308 KB Output is correct
12 Correct 2 ms 4308 KB Output is correct
13 Correct 3 ms 4308 KB Output is correct
14 Correct 2 ms 4308 KB Output is correct
15 Correct 3 ms 4308 KB Output is correct
16 Correct 2 ms 4308 KB Output is correct
17 Correct 3 ms 4308 KB Output is correct
18 Correct 2 ms 4308 KB Output is correct
19 Correct 2 ms 4308 KB Output is correct
20 Correct 2 ms 4308 KB Output is correct
21 Correct 2 ms 4308 KB Output is correct
22 Correct 4 ms 4260 KB Output is correct
23 Correct 3 ms 4308 KB Output is correct
24 Correct 3 ms 4308 KB Output is correct
25 Correct 2 ms 4308 KB Output is correct
26 Incorrect 2 ms 4220 KB Output isn't correct
27 Halted 0 ms 0 KB -