結果
| 問題 | No.5006 Hidden Maze |
| コンテスト | |
| ユーザー |
👑 tails
|
| 提出日時 | 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;
}
}
}
}
tails