【ABC138 C】「Alchemist」を解く【Python3】

「AtCoder」解説一覧へ

「価値」と呼ばれる値を持つN個の具材の合成をN-1回行ったあと、最後の1個の具材の価値の最大値を求める問題です。

提出
n = int(input())
v = list(map(int, input().split()))

v.sort()
ans = v[0]

for i in range(1, n):
    ans = (ans+v[i])/2

print(ans)

途中で価値が小さい具材を一緒に入れてしまうと、具材の価値が下がる要因になってしまいます。

そのため、最初に小さいもの同士を入れ、新しく生成した具材と、次に小さい価値の具材を合わせます。

この作業をするためにvをソートし、for文を用いて「ans」を置き換えていきます。

最後にansを出力します。

【ABC138】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です