結果

問題 No.1948 足し算するだけのパズルゲーム(1)
ユーザー ID 21712
提出日時 2025-05-18 01:42:17
言語 Go
(1.23.4)
結果
AC  
実行時間 156 ms / 2,000 ms
コード長 1,048 bytes
コンパイル時間 15,581 ms
コンパイル使用メモリ 233,404 KB
実行使用メモリ 6,272 KB
最終ジャッジ日時 2025-05-18 01:42:38
合計ジャッジ時間 16,659 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 27
権限があれば一括ダウンロードができます

ソースコード

diff #

package main

import . "fmt"
import . "os"
import bf "bufio"

func main() {
	rd := bf.NewReader(Stdin)
	var h, w int
	Fscan(rd, &h, &w)
	dp0 := make([]int, w)
	dp1 := make([]int, w)
	for i := 0; i < h; i++ {
		tmp0 := make([]int, w)
		tmp1 := make([]int, w)
		for j := 0; j < w; j++ {
			var a int
			Fscan(rd,&a)
			if i == 0 && j == 0 {
				tmp0[0] = a
				continue
			}
			if i > 0 {
				if dp0[j] > a {
					tmp0[j] = dp0[j] + a
					if dp1[j] > a {
						tmp1[j] = dp1[j] + a
					}
				} else if dp1[j] > a {
					tmp1[j] = max(dp0[j], dp1[j]+a)
				} else {
					tmp1[j] = dp0[j]
				}
			}
			if j > 0 {
				if tmp0[j-1] > a {
					tmp0[j] = max(tmp0[j], tmp0[j-1]+a)
					if tmp1[j-1] > a {
						tmp1[j] = max(tmp1[j], tmp1[j]+a)
					}
				} else if tmp1[j-1] > a {
					tmp1[j] = max(tmp1[j], tmp0[j-1], tmp1[j-1]+a)
				} else {
					tmp1[j] = max(tmp1[j], tmp0[j-1])
				}
			}
			if i+1==h&&j+1==w {
				if tmp0[j] > a || tmp1[j] > a {
					Println("Yes")
				} else {
					Println("No")
				}
			}
		}
		dp0, dp1 = tmp0, tmp1
	}
	
}
0