#include<bits/stdc++.h>
#define F(i,x,y) for(int i=x; i<y; i++)
using namespace std;const int I=250000;int n,h,w;char g[500][500];pair<int,int>E[500][500][4];int dp[500][500][9][9];vector<pair<int,int>>q[I];bool inside(int x,int y){return(x>=0&&y>=0&&x<h&&y<w&&g[x][y] !='x');}int main(){ios_base::sync_with_stdio(0);cin.tie(0);cin>>n>>w>>h;memset(dp,0x3f,sizeof(dp));F(i,0,h)F(j,0,w){cin>>g[i][j];if(g[i][j]-'0'>0&&g[i][j]-'0'<10){dp[i][j][g[i][j]-'1'][g[i][j]-'1']=0;}}F(i,0,h)F(j,0,w)if(g[i][j] !='x'){F(k,0,4){pair<int,int>p={i,j};int d=(k+(g[i][j]=='A')*3+(g[i][j]=='C'))%4;while(1){if(d==0){if(inside(p.first-1,p.second)) p.first--;else break;}else if(d==1){if(inside(p.first,p.second+1)) p.second++;else break;}else if(d==2){if(inside(p.first+1,p.second)) p.first++;else break;}else{if(inside(p.first,p.second-1)) p.second--;else break;}if(g[p.first][p.second]=='A') d=(d+3) % 4;if(g[p.first][p.second]=='C') d=(d+1) % 4;}E[i][j][k]=p;}}F(r,0,n){F(k,0,n-r){int l=k+r;F(i,0,h)F(j,0,w) if(g[i][j] !='x'){F(d,k,l){dp[i][j][k][l]=min(dp[i][j][k][l],dp[i][j][k][d]+dp[i][j][d+1][l]);}}}F(k,0,n-r){int l=k+r;F(i,0,h)F(j,0,w) if(g[i][j] !='x'){if(dp[i][j][k][l]<=I) q[dp[i][j][k][l]].push_back({i,j});}F(i,0,I){for(pair<int,int>p : q[i]){int x,y;tie(x,y)=p;if(dp[x][y][k][l]==i){F(d,0,4){int nx,ny;tie(nx,ny)=E[x][y][d];if(dp[nx][ny][k][l]>dp[x][y][k][l]+1){q[dp[nx][ny][k][l]=dp[x][y][k][l]+1].push_back({nx,ny});}}}}q[i].clear();}}}int ans=INT_MAX;F(i,0,h)F(j,0,w)ans=min(ans,dp[i][j][0][n-1]);cout<<(ans>I?-1:ans);return 0;}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
52 ms |
85496 KB |
Output is correct |
2 |
Correct |
50 ms |
85504 KB |
Output is correct |
3 |
Correct |
50 ms |
85496 KB |
Output is correct |
4 |
Correct |
50 ms |
85552 KB |
Output is correct |
5 |
Correct |
50 ms |
85624 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
52 ms |
85496 KB |
Output is correct |
2 |
Correct |
50 ms |
85504 KB |
Output is correct |
3 |
Correct |
50 ms |
85496 KB |
Output is correct |
4 |
Correct |
50 ms |
85552 KB |
Output is correct |
5 |
Correct |
50 ms |
85624 KB |
Output is correct |
6 |
Correct |
50 ms |
85496 KB |
Output is correct |
7 |
Correct |
50 ms |
85496 KB |
Output is correct |
8 |
Correct |
51 ms |
85500 KB |
Output is correct |
9 |
Correct |
50 ms |
85496 KB |
Output is correct |
10 |
Correct |
50 ms |
85504 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
52 ms |
85496 KB |
Output is correct |
2 |
Correct |
50 ms |
85504 KB |
Output is correct |
3 |
Correct |
50 ms |
85496 KB |
Output is correct |
4 |
Correct |
50 ms |
85552 KB |
Output is correct |
5 |
Correct |
50 ms |
85624 KB |
Output is correct |
6 |
Correct |
50 ms |
85496 KB |
Output is correct |
7 |
Correct |
50 ms |
85496 KB |
Output is correct |
8 |
Correct |
51 ms |
85500 KB |
Output is correct |
9 |
Correct |
50 ms |
85496 KB |
Output is correct |
10 |
Correct |
50 ms |
85504 KB |
Output is correct |
11 |
Correct |
208 ms |
92792 KB |
Output is correct |
12 |
Correct |
57 ms |
89340 KB |
Output is correct |
13 |
Correct |
145 ms |
89720 KB |
Output is correct |
14 |
Correct |
330 ms |
97912 KB |
Output is correct |
15 |
Correct |
169 ms |
89976 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
52 ms |
85496 KB |
Output is correct |
2 |
Correct |
50 ms |
85504 KB |
Output is correct |
3 |
Correct |
50 ms |
85496 KB |
Output is correct |
4 |
Correct |
50 ms |
85552 KB |
Output is correct |
5 |
Correct |
50 ms |
85624 KB |
Output is correct |
6 |
Correct |
50 ms |
85496 KB |
Output is correct |
7 |
Correct |
50 ms |
85496 KB |
Output is correct |
8 |
Correct |
51 ms |
85500 KB |
Output is correct |
9 |
Correct |
50 ms |
85496 KB |
Output is correct |
10 |
Correct |
50 ms |
85504 KB |
Output is correct |
11 |
Correct |
208 ms |
92792 KB |
Output is correct |
12 |
Correct |
57 ms |
89340 KB |
Output is correct |
13 |
Correct |
145 ms |
89720 KB |
Output is correct |
14 |
Correct |
330 ms |
97912 KB |
Output is correct |
15 |
Correct |
169 ms |
89976 KB |
Output is correct |
16 |
Correct |
803 ms |
93584 KB |
Output is correct |
17 |
Correct |
966 ms |
124536 KB |
Output is correct |
18 |
Correct |
379 ms |
96112 KB |
Output is correct |
19 |
Correct |
445 ms |
93864 KB |
Output is correct |
20 |
Correct |
675 ms |
107056 KB |
Output is correct |