Submission #554930

# Submission time Handle Problem Language Result Execution time Memory
554930 2022-04-29T16:01:14 Z alexdumitru Awesome Arrowland Adventure (eJOI19_adventure) C++14
100 / 100
79 ms 5076 KB
#include <bits/stdc++.h>

#pragma GCC optimize("O2")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("fast-math")

using namespace std;

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

int n,m,i,j,k;
char a[505][505];
bool vis[505][505];
int dist[505][505];

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

struct nod{
	int cost;
	int x;
	int y;
};

int cost(char x, int y)
{
	if(y>=x)return y-x;
	return 4+y-x;
}

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

priority_queue<nod,vector<nod>,cmp> q;


void solve()
{
	cin>>n>>m;
	for(i=1;i<=n;i++)
	{
		cin>>(a[i]+1);
		for(j=1;j<=m;j++)
		{
			if(a[i][j]=='X')a[i][j]=0;
			if(a[i][j]=='N')a[i][j]=1;
			if(a[i][j]=='E')a[i][j]=2;
			if(a[i][j]=='S')a[i][j]=3;
			if(a[i][j]=='W')a[i][j]=4;
			dist[i][j]=1e9;
		}		
	}
	q.push({0,1,1});
	dist[1][1]=0;
	while(!q.empty())
	{
		nod top = q.top();
		q.pop();
		int x=top.x;
		int y=top.y;
		int c=top.cost;
		if(vis[x][y]||!a[x][y])continue;
		vis[x][y]=1;
		for(k=1;k<5;k++)
		{
			int nx=x+dx[k];
			int ny=y+dy[k];
			int nc=c+cost(a[x][y],k);
			if(nc<dist[nx][ny])
			{
				dist[nx][ny]=nc;
				q.push({nc,nx,ny});
			}
		}
	}
	cout<<(dist[n][m]<1e9?dist[n][m]:-1)<<'\n';
}



signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    solve();
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 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 1 ms 340 KB Output is correct
10 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 336 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 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 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 328 KB Output is correct
13 Correct 1 ms 328 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 1 ms 288 KB Output is correct
18 Correct 1 ms 340 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 340 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 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 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 1 ms 340 KB Output is correct
10 Correct 1 ms 336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 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 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 328 KB Output is correct
13 Correct 1 ms 328 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 1 ms 288 KB Output is correct
18 Correct 1 ms 340 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 340 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 1 ms 340 KB Output is correct
28 Correct 1 ms 340 KB Output is correct
29 Correct 1 ms 340 KB Output is correct
30 Correct 1 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 1 ms 340 KB Output is correct
34 Correct 1 ms 336 KB Output is correct
35 Correct 3 ms 468 KB Output is correct
36 Correct 1 ms 340 KB Output is correct
37 Correct 5 ms 672 KB Output is correct
38 Correct 1 ms 980 KB Output is correct
39 Correct 34 ms 2036 KB Output is correct
40 Correct 42 ms 1992 KB Output is correct
41 Correct 5 ms 1748 KB Output is correct
42 Correct 37 ms 2092 KB Output is correct
43 Correct 79 ms 5076 KB Output is correct
44 Correct 4 ms 1748 KB Output is correct