eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

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

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

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

Количество заработанных денег зависит от того, где она спрыгнет с бревна. Бревно имеет позиции, помеченные 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 и будет играть оптимально, округлённую до ближайшего целого числа.

Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
2
1
3
Выходные данные #1
150000
300000
Источник 2018 USACO Декабрь, Платина