結果
| 問題 |
No.20 砂漠のオアシス
|
| コンテスト | |
| ユーザー |
brthyyjp
|
| 提出日時 | 2021-11-10 02:07:09 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,316 bytes |
| コンパイル時間 | 373 ms |
| コンパイル使用メモリ | 82,304 KB |
| 実行使用メモリ | 82,096 KB |
| 最終ジャッジ日時 | 2024-11-19 11:37:15 |
| 合計ジャッジ時間 | 3,774 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 16 WA * 5 |
ソースコード
import sys
import io, os
input = sys.stdin.buffer.readline
#input = io.BytesIO(os.read(0,os.fstat(0).st_size)).readline
n, h, ox, oy = map(int, input().split())
ox, oy = ox-1, oy-1
L = [list(map(int, input().split())) for i in range(n)]
dp = [[0]*2 for i in range(n*n)]
dp[0][0] = h
import heapq
q = []
q.append((-h, 0, 0))
heapq.heapify(q)
while q:
cur_h, v, k = heapq.heappop(q)
cur_h *= (-1)
x, y = divmod(v, n)
for dx, dy in (-1, 0), (1, 0), (0, -1), (0, 1):
nx, ny = x+dx, y+dy
if 0 <= nx < n and 0 <= ny < n:
nv = nx*n+ny
if cur_h-L[nx][ny] <= 0:
continue
if k == 0:
if dp[nv][k] < cur_h-L[nx][ny]:
dp[nv][k] = cur_h-L[nx][ny]
heapq.heappush(q, (-dp[nv][k], nv, k))
if nx == ox and ny == oy:
if dp[nv][k+1] < 2*(cur_h-L[nx][ny]):
dp[nv][k+1] = 2*(cur_h-L[nx][ny])
heapq.heappush(q, (-dp[nv][k+1], nv, k+1))
else:
if dp[nv][k] < cur_h-L[nx][ny]:
dp[nv][k] = cur_h-L[nx][ny]
heapq.heappush(q, (-dp[nv][k], nv, k))
t = (n-1)*n+n-1
if dp[t][0] > 0 or dp[t][1] > 0:
print('YES')
else:
print('NO')
brthyyjp