結果
| 問題 |
No.20 砂漠のオアシス
|
| コンテスト | |
| ユーザー |
core123
|
| 提出日時 | 2019-04-24 17:12:28 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,744 bytes |
| コンパイル時間 | 2,542 ms |
| コンパイル使用メモリ | 79,360 KB |
| 実行使用メモリ | 48,528 KB |
| 最終ジャッジ日時 | 2024-11-08 03:10:13 |
| 合計ジャッジ時間 | 12,539 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 15 WA * 6 |
ソースコード
import java.util.*;
public class Main {
public static final int[] dx= {-1,0,0,1};
public static final int[] dy= {0,-1,1,0};
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int v=sc.nextInt();
int ox=sc.nextInt()-1;
int oy=sc.nextInt()-1;
int[][] l=new int[n][n];
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
l[i][j]=sc.nextInt();
}
}
int[][] hp=new int[n][n];
for(int[] ints:hp) {
Arrays.fill(ints, 0);
}
Deque<FixedIntTuple> deq=new ArrayDeque<>();
deq.add(new FixedIntTuple(0, 0,v,false));
while(deq.size()>0) {
FixedIntTuple fit=deq.removeFirst();
//System.out.println(fit);
if(hp[fit.x][fit.y]<fit.v) {
hp[fit.x][fit.y]=fit.v;
if(fit.x==n-1&&fit.y==n-1) {
System.out.println("YES");
return;
}
}else {
continue;
}
for(int i=0;i<4;i++) {
int x=fit.x+dx[i];
int y=fit.y+dy[i];
if(x<0||x>=n||y<0||y>=n)continue;
int vn=fit.v-l[x][y];
boolean f=fit.f;
if(vn<=0)continue;
if(!fit.f&&(fit.x==ox&&fit.y==oy)) {
vn*=2;
f=true;
}
deq.addFirst(new FixedIntTuple(x, y, vn,f));
}
}
System.out.println("NO");
}
public static class FixedIntTuple{
public final int x,y,v;
public final boolean f;
/**
* @param x
* @param y
*/
public FixedIntTuple(int x, int y,int v,boolean f) {
super();
this.x = x;
this.y = y;
this.v=v;
this.f=f;
}
/* (非 Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
// TODO 自動生成されたメソッド・スタブ
return String.format("FixedIntTuple:(%d,%d,%d)",x,y,v);
}
}
}
core123