結果
問題 |
No.1948 足し算するだけのパズルゲーム(1)
|
ユーザー |
![]() |
提出日時 | 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 |
ソースコード
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 } }