Submission #630142

# Submission time Handle Problem Language Result Execution time Memory
630142 2022-08-15T18:02:39 Z alexdumitru Awesome Arrowland Adventure (eJOI19_adventure) C++14
100 / 100
67 ms 6108 KB
#include <bits/stdc++.h>

using namespace std;

struct nod{
    int x,y,c;
};

int n,m,i,j,d[505][505];
char a[505][505];
int b[505][505];

bool in(int x, int y)
{
    return (x>0&&y>0&&x<=n&&y<=m);
}

int cod(char c)
{
    if(c=='N')return 0;
    if(c=='E')return 1;
    if(c=='S')return 2;
    if(c=='W')return 3;
    return 4;
}

int cost(int a, int b)
{
    return (b-a+4)%4;
}

int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};

struct cmp{
    bool operator()(nod a,nod b)
    {
        return a.c>b.c;
    }
};

priority_queue<nod,vector<nod>,cmp>pq;
bool vis[505][505];

void solve()
{
    cin>>n>>m;
    for(i=1;i<=n;i++)
    {
        cin>>(a[i]+1);
        for(j=1;j<=m;j++)
        {
            d[i][j]=1e9;
            b[i][j]=cod(a[i][j]);
        }
    }
    d[1][1]=0;
    pq.push({1,1,0});
    while(!pq.empty())
    {
        int x=pq.top().x;
        int y=pq.top().y;
        int c=pq.top().c;
        pq.pop();
        if(a[x][y]=='X'||vis[x][y])
            continue;
        vis[x][y]=1;
        for(int i=0;i<4;i++)
        {
            int nx=x+dx[i];
            int ny=y+dy[i];
            int nc=c+cost(b[x][y],i);
            if(nc<d[nx][ny])
            {
                d[nx][ny]=nc;
                pq.push({nx,ny,nc});
            }
        }
    }
    cout<<(d[n][m]<1e9?d[n][m]:-1)<<'\n';
}

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    solve();
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 0 ms 340 KB Output is correct
9 Correct 0 ms 340 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 0 ms 340 KB Output is correct
9 Correct 0 ms 340 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 1 ms 340 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 0 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 264 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 0 ms 340 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 0 ms 340 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 0 ms 340 KB Output is correct
9 Correct 0 ms 340 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 1 ms 340 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 0 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 1 ms 340 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 1 ms 340 KB Output is correct
23 Correct 1 ms 264 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 0 ms 340 KB Output is correct
26 Correct 1 ms 340 KB Output is correct
27 Correct 0 ms 340 KB Output is correct
28 Correct 0 ms 340 KB Output is correct
29 Correct 0 ms 340 KB Output is correct
30 Correct 0 ms 340 KB Output is correct
31 Correct 1 ms 340 KB Output is correct
32 Correct 1 ms 340 KB Output is correct
33 Correct 0 ms 340 KB Output is correct
34 Correct 0 ms 340 KB Output is correct
35 Correct 3 ms 596 KB Output is correct
36 Correct 0 ms 340 KB Output is correct
37 Correct 5 ms 852 KB Output is correct
38 Correct 1 ms 1492 KB Output is correct
39 Correct 34 ms 3052 KB Output is correct
40 Correct 34 ms 3084 KB Output is correct
41 Correct 3 ms 2772 KB Output is correct
42 Correct 36 ms 3000 KB Output is correct
43 Correct 67 ms 6108 KB Output is correct
44 Correct 3 ms 2772 KB Output is correct