結果
問題 |
No.1199 お菓子配り-2
|
ユーザー |
|
提出日時 | 2021-12-20 09:47:55 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 761 ms / 1,000 ms |
コード長 | 994 bytes |
コンパイル時間 | 13,530 ms |
コンパイル使用メモリ | 238,408 KB |
実行使用メモリ | 10,496 KB |
最終ジャッジ日時 | 2024-09-15 15:14:52 |
合計ジャッジ時間 | 40,085 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 45 |
ソースコード
package main import ( "fmt" "bufio" "os" "math" ) func Max(a, b int) int { if a > b { return a } else { return b } } func Add(a, b int) int { if a == math.MinInt64 { return a } else { return a + b } } func main() { r := bufio.NewReader(os.Stdin) w := bufio.NewWriter(os.Stdout) defer w.Flush() var n, m int fmt.Fscan(r, &n, &m) a := make([]int, n) for i := 0; i < n; i++ { sum := 0 for j := 0; j < m; j++ { var x int fmt.Fscan(r, &x) sum += x } a[i] = sum } dp := make([][]int, n+1) for i := 0; i <= n; i++ { dp[i] = make([]int, n+1) for j := 0; j <= n; j++ { dp[i][j] = math.MinInt64 } } dp[0][0] = 0 for i := 1; i <= n; i++ { dp[i][0] = 0 for j := 1; j <= n; j++ { if j % 2 == 1 { dp[i][j] = Max(dp[i-1][j], Add(dp[i-1][j-1], a[i-1])) } else { dp[i][j] = Max(dp[i-1][j], Add(dp[i-1][j-1], -a[i-1])) } } } max := math.MinInt64 for i := 0; i <= n; i++ { max = Max(max, dp[n][i]) } fmt.Fprintln(w, max) }