#atc002c. [atc002_c]最適二分探索木

[atc002_c]最適二分探索木

問題文

nn 個の葉を持つ順序付き二分木を作りたい。 この二分木のコストは以下のように定義される。

Σi=1nwi×depth(i)Σ_{i=1}^{n} w_i × depth(i)

ただし、depth(i)depth(i) は、二分木における左から ii 個目の葉の深さを表す。 wiw_i は入力として与えられる重みである。 コストの最小値を求めよ。


入力

入力は以下の形式で標準入力から与えられる。

nn w1w_1 w2w_2 ... wnw_n

  • 11 行目には、要素の個数を表す整数 n(1n100,000)n (1≦n≦100,000) が与えられる。
  • 22 行目には、要素の重みを表す nn 個の整数が与えられる。このうち i(1in)i (1≦i≦n) 番目の要素は、ii 番目の要素の重みを表す wi(1wi1,000)w_i(1≦w_i≦1,000) である。

出力

条件を満たす順序付き二分木のコストの最小値を出力せよ。


部分点

この問題には部分点が設定されている。

  • n100n ≦ 100 を満たすデータセットに正解した場合は、5050 点が与えられる。
  • n3,000n ≦ 3,000 を満たすデータセットに正解した場合は、上記とは別に 5050 点が与えられる。
  • 追加の制約のないデータセットに正解した場合は、上記とは別に 11 点が与えられる。

解説

最適二分探索木問題 from AtCoder Inc.


入力例1

6
1 2 3 4 9 3```

### 出力例1

```plain
53

以下の図のような二分木が最適となります。

図 1 : サンプル入出力に相当する二分木

このような二分木を作った場合、コストは 53 になります。