結果
問題 | No.5006 Hidden Maze |
ユーザー |
![]() |
提出日時 | 2022-06-12 17:37:09 |
言語 | cLay (20241019-1) |
結果 |
AC
|
実行時間 | 60 ms / 2,000 ms |
コード長 | 1,560 bytes |
コンパイル時間 | 2,715 ms |
実行使用メモリ | 22,868 KB |
スコア | 75,598 |
平均クエリ数 | 245.02 |
最終ジャッジ日時 | 2022-06-12 17:37:19 |
合計ジャッジ時間 | 9,936 ms |
ジャッジサーバーID (参考情報) |
judge13 / judge14 |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 100 |
ソースコード
//interactive char sy[20][20]; char sx[20][20]; ll ey[20][20],ey0[20][20]; ll ex[20][20],ex0[20][20]; ll d[20][20]; ll cost_c=100000; ll cost_i=800; ll cost_w=1600000; { rd_ll(); // H rd_ll(); // W rd_ll(); // p rep(y,20){ rep(x,20){ ey[y][x]=(ey0[y][x]=cost_c+abs(y*2+1-x*2))+cost_i; ex[y][x]=(ex0[y][x]=cost_c+abs(y*2-x*2-1))+cost_i; } } DijkstraHeap<ll> h; h.walloc(400); while(true){ { h.init(400); h.change(19*20+19,-0); while(h.size){ ll k=h.pop(); ll v=h.val[k]; ll y=k/20; ll x=k%20; d[y][x]=v; v&=~3l; if(y!= 0) h.change(k-20,v+ey[y-1][x]*4+0); if(y!=19) h.change(k+20,v+ey[y-0][x]*4+1); if(x!= 0) h.change(k- 1,v+ex[y][x-1]*4+2); if(x!=19) h.change(k+ 1,v+ex[y][x-0]*4+3); } } char p[401]; { ll l=0; ll x=0; ll y=0; while(!(y==19&&x==19)){ ll c=d[y][x]&3; p[l++]="DURL"[c]; y+=(c==0)-(c==1); x+=(c==2)-(c==3); } p[l]=0; wt(p); } { ll@r; if(r<0) exit(0); ll x=0; ll y=0; rep(i,r){ ll c=p[i]; if(c=='U') if(!sy[--y][x]) sy[y-0][x]=1,ey[y-0][x]=ey0[y-0][x]; if(c=='D') if(!sy[y++][x]) sy[y-1][x]=1,ey[y-1][x]=ey0[y-1][x]; if(c=='L') if(!sx[y][--x]) sx[y][x-0]=1,ex[y][x-0]=ex0[y][x-0]; if(c=='R') if(!sx[y][x++]) sx[y][x-1]=1,ex[y][x-1]=ex0[y][x-1]; } { ll c=p[r]; if(c=='U') if(!sy[--y][x]) ey[y-0][x]+=cost_w; if(c=='D') if(!sy[y++][x]) ey[y-1][x]+=cost_w; if(c=='L') if(!sx[y][--x]) ex[y][x-0]+=cost_w; if(c=='R') if(!sx[y][x++]) ex[y][x-1]+=cost_w; } } } }