はまやんはまやんはまやん

hamayanhamayan's blog

Alchemist [AtCoder Beginner Contest 138 C]

https://atcoder.jp/contests/abc138/tasks/abc138_c

解説

https://atcoder.jp/contests/abc138/submissions/7014597

abcの具材があったときに、((a+b)/2+c)/2=a/4+b/4+c/2のような場合が考えられる。
なるべく、分母が大きいものは、なるべく小さい数にあてるのがいい。
そして、早く合成に使うと分母が大きくなる。
ここからはエスパーだが、まだ300点問題なので、ソートして、小さい順から順番に合成させていく。

int N; double v[50];
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N;
    rep(i, 0, N) cin >> v[i];
    sort(v, v + N);

    double ans = v[0];
    rep(i, 1, N) ans = (ans + v[i]) / 2;
    printf("%.10f\n", ans);
}