結果
| 問題 |
No.1949 足し算するだけのパズルゲーム(2)
|
| コンテスト | |
| ユーザー |
ygd.
|
| 提出日時 | 2022-05-24 00:01:20 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,937 bytes |
| コンパイル時間 | 156 ms |
| コンパイル使用メモリ | 82,432 KB |
| 実行使用メモリ | 103,704 KB |
| 最終ジャッジ日時 | 2024-09-20 13:27:04 |
| 合計ジャッジ時間 | 7,263 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 WA * 6 |
ソースコード
import sys
#input = sys.stdin.readline
input = sys.stdin.buffer.readline #文字列はダメ
#sys.setrecursionlimit(1000000)
#import bisect
#import itertools
#import random
from heapq import heapify, heappop, heappush
#from collections import defaultdict
#from collections import deque
#import copy
#import math
#from functools import lru_cache
#@lru_cache(maxsize=None)
#MOD = pow(10,9) + 7
#MOD = 998244353
dx = [1,0,-1,0]
dy = [0,1,0,-1]
#dx8 = [1,1,0,-1,-1,-1,0,1]
#dy8 = [0,1,1,1,0,-1,-1,-1]
base = 505
def main():
H,W,Y,X = map(int,input().split()); INF = pow(10,18)
X -= 1; Y -= 1
A = [list(map(int,input().split())) for _ in range(H)]
PQ = []
heappush(PQ,(0,Y*base+X))
ok = [[0]*W for _ in range(H)]
power = A[Y][X]
while PQ:
dummy,idx = heappop(PQ)
y = idx//base
x = idx%base
#print(x,y,A[y][x],"P",power)
if ok[y][x] == 1: continue
if power < A[y][x]: continue
power += A[y][x]
ok[y][x] = 1
for d in range(4):
ny = y + dy[d]
nx = x + dx[d]
if ny < 0 or ny >= H or nx < 0 or nx >= W: continue
if ok[ny][nx] == 1: continue #既に倒している。
if A[ny][nx] < power:
power += A[ny][nx]
ok[ny][nx] = 1
for dd in range(4):
nny = ny + dy[dd]
nnx = nx + dx[dd]
if nny < 0 or nny >= H or nnx < 0 or nnx >= W: continue
if ok[nny][nnx] == 1: continue #既に倒している。
heappush(PQ, (A[nny][nnx],nny*base + nnx))
else:
heappush(PQ, (A[ny][nx], ny*base + nx))
#print(power)
#print(ok)
for i in range(H):
for j in range(W):
if ok[i][j] == 0:
print('No')
exit()
print('Yes')
if __name__ == '__main__':
main()
ygd.