func solve() {
in := getInts()
x, y := in[0], in[1]
red := getInts()
green := getInts()
white := getInts()
red = reverse(sortSlice(red))[:x]
green = reverse(sortSlice(green))[:y]
white = reverse(sortSlice(white))
allApples := append(red, green...)
allApples = append(allApples, white...)
allApples = reverse(sortSlice(allApples))
ans := 0
for i := 0; i < x + y; i++ {
ans += allApples[i]
}
fmt.Println(ans)
}
https://atcoder.jp/contests/abc160/tasks/abc160_e
問題概要
赤いりんご、緑のりんご、無色のリンゴがそれぞれ複数個ある。りんご個々に美味しさの数値がわかる。 無色のりんごは赤にも緑にも任意に変更できる。 赤いりんごをX個、緑のりんごをY個選んで美味しさを最大化したとき、美味しさはいくつになるか求めよ。
解き方
赤いりんご、緑のりんごを降順でソートしてそれぞれX個、Y個まで抽出する。 無色のりんごも合わせて、全部同じ籠に入れる。 そこからX+Y個をでかい順で取り出せばOK。
https://atcoder.jp/contests/abc160/submissions/57347490