結果
| 問題 |
No.1279 Array Battle
|
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 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)
}
ID 21712