AtCoder Beginner Contest 160 E – Red and Green Apples をPython3で解く

Share

AtCoder上にある問題のうち、AtCoder Problemsでdiff 800以上と判定されているものを順番に解いていく企画。
基本的な考え方は全てコード中のコメントに入れてあるので、参照のこと。

出典:
AtCoder Beginner Contest 160 E – Red and Green Apples

解くだけなら、割とどうにでも解ける。が、簡単に書くのが存外難しい問題。こういうのをすんなりと思いつけるようになりたい……。

# AtCoder Beginner Contest 160 E - Red and Green Apples
# https://atcoder.jp/contests/abc160/tasks/abc160_e
# tag: 考察

# 食べられる可能性があるリンゴに注目すると、
# 赤色リンゴのうち上位 X 個は食べられる可能性がある。
# 緑色リンゴのうち上位 Y 個は食べられる可能性がある。

# この集合に、無色のリンゴを加えて美味しさ順にソートし、
# 上位 X+Y 個を食べれば最善になる。

def main():
    X, Y, A, B, C = map(int, input().split())
    reds = list(map(int, input().split()))
    greens = list(map(int, input().split()))
    others = list(map(int, input().split()))

    # 赤と緑を降順でソートしておく
    reds.sort(reverse=True)
    greens.sort(reverse=True)

    # 候補は、赤の上位 X 個と緑の上位 Y 個と無色全て
    candies = reds[:X] + greens[:Y] + others

    # 候補のリンゴを改めてソートし、上位 X+Y 個の合計を出力
    candies.sort(reverse=True)
    print(sum(candies[:X+Y]))

main()
Share

コメントを残す

メールアドレスが公開されることはありません。