結果
| 問題 |
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 |
ソースコード
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
}
}
ID 21712