分からないので回答を見た。
なるほど。
悪かったところ。
以下のように考えていた。
bad_image.py
# 〇
# /\
# 〇 〇
# /\ /\
#〇〇〇〇
下の階層から上に行くにしたがって割る係数が大きくなる。
だから、小さい値に係数が集中するツリーを考える必要があった。
つまり、以下のツリーが最適
good_image.py
# 〇
# /\
# 〇 \
# /\ \
# 〇 \ \
# / \ \ \
#〇 〇 〇 〇
#↑コレ
以上のように考えると、
1/2 が掛けられる回数が左から昇順となっていることが分かる
よって与えられた配列をソートしておけば、配列中、比較的大きい値には 1/2 が掛ける回数は最小になる。
なるほど。勉強になりました。
abc138c.py
N = int(input())
V = list(map(int,input().split()))
V.sort()
ans = 0
for i in range(N):
if i == 0:
ans = V[0]
else:
ans = (ans+V[i])/2
print(ans)
あともう一つ。
演算に /2 を使ったことだ。
割り算の回数が 50程度の場合は -5 乗 程度の誤差は
問題にはならないということだ。