結果
| 問題 |
No.1949 足し算するだけのパズルゲーム(2)
|
| コンテスト | |
| ユーザー |
ygd.
|
| 提出日時 | 2022-05-23 23:58:34 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,865 bytes |
| コンパイル時間 | 187 ms |
| コンパイル使用メモリ | 82,132 KB |
| 実行使用メモリ | 83,460 KB |
| 最終ジャッジ日時 | 2024-09-20 13:26:53 |
| 合計ジャッジ時間 | 5,090 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 16 WA * 10 |
ソースコード
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,Y*base+X)
ok = [[0]*W for _ in range(H)]
power = A[Y][X]
while PQ:
idx = heappop(PQ)
y = idx//base
x = idx%base
#print(x,y,A[y][x])
if ok[y][x] == 1: continue
if power < A[y][x]: continue
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, nny*base + nnx)
else:
heappush(PQ, 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.