Monoxer Programming Contest for Engineers
コンテスト日時
2025/08/08 (Fr) 18:30 - 20:10

K - Coupon

Flavor
10
s
1024
MB
650

問題文

モノグサボードゲーム店では、$N$個のボードゲームが一列に並べられています。左から$i$番目に置かれたボードゲームを商品$i$と呼び、単価は$A_i$円です。各商品の在庫はひとつだけであり、一度売れると売り切れます。商品は、次の手順で購入します。

  • $1 \le L \le R \le N$となるような整数L, Rを選ぶ。ただし商品$L$, 商品$L + 1$, $\ldots$, 商品$R$の中に売り切れているものがあってはならない。
  • 「商品$L$, 商品$L + 1$, $\ldots$, 商品$R$の単価の合計」から「商品$L$, 商品$L + 1$, $\ldots$, 商品$R$のうち最も単価が高いものの単価の半額」を引いた金額を支払う
  • 手数料として、$(R - L) ^ 2$円を追加で支払う

$k = 1, 2, \ldots, N$について、手順を$k$回行ってすべての商品を買うときにかかる最小の金額を求めてください。形式的に述べると、区間$[1, N]$を小さい方から順に$[1, p_1], [p_1 + 1, p_2], \ldots, [p_{k - 1} + 1, N]$(ただし$k = 1$のときは$[1, N]$)と分割したときのそれぞれの区間$[l, r]$に対する$\sum_{i = l}^r A_i - \max_{l \le i \le r} A_i / 2 + (r - l) ^ 2$の総和の最小値を各$k$について求めてください。

(2025-08-08 18:35 修正) 「形式的に述べると」のところで、最大値を 2 で割りました。

制約

  • $1 \le N \le 5000$
  • $2 \le A_i \le 10^9$
  • $A_i$は偶数

入力

$N$
$A_1$ $A_2$ $\ldots$ $A_N$

出力

$N$行にわたって答えを出力してください。末尾に改行を加えてください。

入力例 1
4 2 4 8 6
出力例 1
25 16 12 10

例えば2回の手順で買う場合、

  • $L = 1, R = 2$を選ぶ。商品代は$4 + 2 = 6$円、値引$4 / 2 = 2$円、手数料$(2 - 1) ^ 2 = 1$円より、合計5円を支払う。
  • $L = 3, R = 4$を選ぶ。商品代は$8 + 6 = 14$円、値引$8 / 2 = 4$円、手数料$(2 - 1) ^ 2 = 1$円より、合計11円を支払う。

とするのが最善で、合計16円となります。

入力例 2
17 314 1592 6 5358 97932 38 4 6 2 6 4 338 32 7950 2 8 8
出力例 2
64890 60772 58050 57247 57051 56893 56867 56846 56835 56825 56819 56814 56810 56807 56804 56802 56800
提出
C++23 (g++ 12.2.0)