Slimes

AtCoder
IDdp_n
Time2000ms
Memory256MB
Difficulty
There are $N$ slimes lining up in a row. Initially, the $i$\-th slime from the left has a size of $a_i$. Taro is trying to combine all the slimes into a larger slime. He will perform the following operation repeatedly until there is only one slime: * Choose two adjacent slimes, and combine them into a new slime. The new slime has a size of $x + y$, where $x$ and $y$ are the sizes of the slimes before combining them. Here, a cost of $x + y$ is incurred. The positional relationship of the slimes does not change while combining slimes. Find the minimum possible total cost incurred. ## Constraints * All values in input are integers. * $2 \leq N \leq 400$ * $1 \leq a_i \leq 10^9$ ## Input Input is given from Standard Input in the following format: $N$ $a_1$ $a_2$ $\ldots$ $a_N$ [samples]
Samples
Input #1
4
10 20 30 40
Output #1
190

Taro should do as follows (slimes being combined are shown in bold):

*   (**10**, **20**, 30, 40) → (**30**, 30, 40)
*   (**30**, **30**, 40) → (**60**, 40)
*   (**60**, **40**) → (**100**)
Input #2
5
10 10 10 10 10
Output #2
120

Taro should do, for example, as follows:

*   (**10**, **10**, 10, 10, 10) → (**20**, 10, 10, 10)
*   (20, **10**, **10**, 10) → (20, **20**, 10)
*   (20, **20**, **10**) → (20, **30**)
*   (**20**, **30**) → (**50**)
Input #3
3
1000000000 1000000000 1000000000
Output #3
5000000000

The answer may not fit into a 32-bit integer type.
Input #4
6
7 6 8 6 1 1
Output #4
68

Taro should do, for example, as follows:

*   (7, 6, 8, 6, **1**, **1**) → (7, 6, 8, 6, **2**)
*   (7, 6, 8, **6**, **2**) → (7, 6, 8, **8**)
*   (**7**, **6**, 8, 8) → (**13**, 8, 8)
*   (13, **8**, **8**) → (13, **16**)
*   (**13**, **16**) → (**29**)
API Response (JSON)
{
  "problem": {
    "name": "Slimes",
    "description": {
      "content": "There are $N$ slimes lining up in a row. Initially, the $i$\\-th slime from the left has a size of $a_i$. Taro is trying to combine all the slimes into a larger slime. He will perform the following ope",
      "description_type": "Markdown"
    },
    "platform": "AtCoder",
    "limit": {
      "time_limit": 2000,
      "memory_limit": 262144
    },
    "difficulty": "None",
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "dp_n"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "There are $N$ slimes lining up in a row. Initially, the $i$\\-th slime from the left has a size of $a_i$.\nTaro is trying to combine all the slimes into a larger slime. He will perform the following ope...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments