結果

問題 No.2741 Balanced Choice
ユーザー ID 21712
提出日時 2025-04-20 18:27:23
言語 Go
(1.23.4)
結果
AC  
実行時間 112 ms / 2,000 ms
コード長 580 bytes
コンパイル時間 12,596 ms
コンパイル使用メモリ 254,128 KB
実行使用メモリ 7,844 KB
最終ジャッジ日時 2025-04-20 18:27:38
合計ジャッジ時間 14,012 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 10
権限があれば一括ダウンロードができます

ソースコード

diff #

package main

import . "fmt"

func main() {
	var n,w,d int
	Scan(&n,&w,&d)
	dp := make([][]int, 2)
	for i := range dp {
		dp[i] = make([]int, w+1)
		for j := range dp[i] {
			dp[i][j] = -1e9
		}
	}
	dp[0][0] = 0
	dp[1][0] = 0
	for i := 0; i < n; i++ {
		var ti,wi,vi int
		Scan(&ti,&wi,&vi)
		tmp := dp[ti]
		for x := w-wi; x >= 0; x-- {
			tmp[x+wi] = max(tmp[x+wi],tmp[x]+vi)
		}
	}
	var ans int
	for w0 := 0; w0 <= w; w0++ {
		for w1 := 0; w1 <= w; w1++ {
			if w0+w1 > w || max(w1-w0,w0-w1) > d {
				continue
			}
			ans = max(ans, dp[0][w0]+dp[1][w1])
		}
	}
	Println(ans)
}
0