結果

問題 No.20 砂漠のオアシス
コンテスト
ユーザー letrangerjp
提出日時 2017-06-03 18:24:30
言語 Ruby
(4.0.7 + ACL)
コンパイル:
ruby -w -c _filename_
実行:
ruby _filename_
結果
WA  
実行時間 -
コード長 713 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 9 ms
コンパイル使用メモリ 9,088 KB
実行使用メモリ 14,720 KB
最終ジャッジ日時 2026-09-15 10:48:06
合計ジャッジ時間 10,567 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other WA * 3 TLE * 1 -- * 17
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #
raw source code

N, V, X, Y = gets.split.take(4).map(&:to_i)
X -= 1
Y -= 1
L = N.times.map{
  gets.split.take(N).map(&:to_i)
}

$visited = N.times.map{[false] * N}
$oasis = false
DIRS = [[1,0], [0,1], [-1, 0], [0,-1]]
def f(x, y, hp)
  # p [x,y,hp]
  hp -= L[x][y]
  return false if hp <= 0
  return true if x == N-1 && y == N-1
  if x == X && y == Y && !$oasis
    hp *= 2
    $oasis = true
    $visited = N.times.map{[false] * N}
    $visited[x][y] = true
  end
  DIRS.each{|(px, py)|
    _x = x+px
    _y = y+py
    next if !_x.between?(0, N-1)
    next if !_y.between?(0, N-1)
    next if $visited[_x][_y]
    $visited[_x][_y] = true
    return true if f(_x, _y, hp)
    $visited[_x][_y] = false
  }
  false
end

p f(0, 0, V)
0