結果
| 問題 | No.20 砂漠のオアシス | 
| コンテスト | |
| ユーザー |  brthyyjp | 
| 提出日時 | 2021-11-10 02:05:04 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                WA
                                 
                             | 
| 実行時間 | - | 
| コード長 | 1,266 bytes | 
| コンパイル時間 | 615 ms | 
| コンパイル使用メモリ | 82,304 KB | 
| 実行使用メモリ | 82,284 KB | 
| 最終ジャッジ日時 | 2024-11-19 11:36:48 | 
| 合計ジャッジ時間 | 3,629 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 16 WA * 5 | 
ソースコード
import sys
import io, os
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 = [[-1]*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')
            
            
            
        