eolymp
bolt
Try our new interface for solving problems
Məsələlər

Балансировочное бревно

Балансировочное бревно

Для того, чтобы заработать денег на новое стойло, корова Беси начала давать представление в местном цирке, демонстрируя свои свои замечательные возможности балансировать ходя вперёд и назад по высоко подвешенному бревну.

Количество заработанных денег зависит от того, где она спрыгнет с бревна. Бревно имеет позиции, помеченные 0, 1,..., n + 1 слева направо. Если Беси достигнет точки 0 или n + 1, она упадёт с бревна и не получит деньги.

Если Беси находится в позиции k, она может сделать что-то из следующего:

  1. Бросить монету. Если она увидит хвост ("орёл"), она идёт в позицию k1, а если она увидит голову ("решка"), она идёт в позицию k + 1 (т.е с вероятностью 1 / 2 в обоих случаях).

  2. Спрыгнуть с бревна и получить плату f(k) (0f(k) ≤ 109).

Беси поняла, что она не может гарантировать конкретный доход, поскольку её движение управляется случайным выбрасыванием монеты. Однако, основываясь на позиции, где она начинает, она хочет определить какой будет её ожидаемая выплата, если она сделает оптимальную последовательность решений ("оптимальную" означает, что решения приведут к наибольшей возможной ожидаемой выплате). Например, её стратегия заработать выплату 10 с вероятностью 1 / 2, 8 с вероятностью 1 / 4, или 0 с вероятностью 1 / 4 приведёт к тому что её ожидаемая выплата будет взвешенной средней величиной 10 * (1 / 2) + 8 * (1 / 4) + 0 * (1 / 4) = 7.

Входные данные

Первая строка ввода содержит n (2n105). Каждая из оставшихся n строк содержит f(1)...f(n).

Выходные данные

Выведите n строк. В строке i, выведите 105 умножить на ожидаемую оплату если Беси стартует в позиции i и будет играть оптимально, округлённую до ближайшего целого числа.

Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 128 MiB
Giriş verilənləri #1
2
1
3
Çıxış verilənləri #1
150000
300000
Mənbə 2018 USACO Декабрь, Платина