結果

問題 No.1948 足し算するだけのパズルゲーム(1)
コンテスト
ユーザー とりゐ
提出日時 2022-05-20 22:04:10
言語 PyPy3
(8.0.0 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WJ  
(最新)
AC  
(最初)
実行時間 -
コード長 1,015 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
最終ジャッジ日時 2026-08-31 16:40:44
ジャッジサーバーID
(参考情報)
judge3_0 / judge2_0
このコードへのチャレンジ
(要ログイン)

ソースコード

diff #
raw source code

h,w=map(int,input().split())
a=[]
for _ in range(h):
  a.append(list(map(int,input().split())))

dp0=[[-1]*w for i in range(h)]
dp1=[[-1]*w for i in range(h)]
dp0[0][0]=a[0][0]

for i in range(h):
  for j in range(w):
    if i>0:
      if dp0[i-1][j]!=-1:
        if dp0[i-1][j]>a[i][j]:
          dp0[i][j]=max(dp0[i][j],dp0[i-1][j]+a[i][j])
        else:
          if (i,j)!=(h-1,w-1):
            dp1[i][j]=max(dp1[i][j],dp0[i-1][j])
      if dp1[i-1][j]!=-1:
        if dp1[i-1][j]>a[i][j]:
          dp1[i][j]=max(dp1[i][j],dp1[i-1][j]+a[i][j])
    if j>0:
      if dp0[i][j-1]!=-1:
        if dp0[i][j-1]>a[i][j]:
          dp0[i][j]=max(dp0[i][j],dp0[i][j-1]+a[i][j])
        else:
          if (i,j)!=(h-1,w-1):
            dp1[i][j]=max(dp1[i][j],dp0[i][j-1])
      if dp1[i][j-1]!=-1:
        if dp1[i][j-1]>a[i][j]:
          dp1[i][j]=max(dp1[i][j],dp1[i][j-1]+a[i][j])

if dp0[-1][-1]!=-1 or dp1[-1][-1]!=-1:
  print('Yes')
else:
  print('No')

'''
for i in dp0:
  print(i)
for i in dp1:
  print(i)
'''
0