結果
問題 |
No.1279 Array Battle
|
ユーザー |
![]() |
提出日時 | 2024-12-18 11:57:57 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 7 ms / 2,000 ms |
コード長 | 730 bytes |
コンパイル時間 | 10,311 ms |
コンパイル使用メモリ | 217,516 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-18 11:58:10 |
合計ジャッジ時間 | 11,183 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 20 |
ソースコード
package main import . "fmt" func main() { var n int Scan(&n) a:=make([]int,n) b:=make([]int,n) for i:=range a { Scan(&a[i]) } for i:=range b { Scan(&b[i]) } dp:=make([]map[int]map[int]int,n+1) for i:=range dp { dp[i]=make(map[int]map[int]int) } dp[0][0]=map[int]int{0:1} for i,v:=range a { for k,m:=range dp[i] { for j,w:=range b { p:=1<<j if (k&p)!=0 { continue } if dp[i+1][k|p]==nil { dp[i+1][k|p]=make(map[int]int) } for s,c:=range m{ if v>w { s+=v-w } dp[i+1][k|p][s]+=c } } } } var ss,cc int for _,m:=range dp[n] { for s,c :=range m { if s>ss { ss=s cc=c } else if s==ss { cc+=c } } } Println(cc) }