Partition k groups squared cost

Write codeHard40 min

Your task

Partition an array of non-negative integers into exactly k contiguous groups to minimize the total cost, where the cost of a group is (sum of its elements) squared. Return the minimum total cost. Constraints: 1 <= k <= length <= 2000, 0 <= each element <= 1000. The cost function is convex/monotone so the layered DP admits divide-and-conquer optimization, but a correct O(k*n^2) reference is acceptable for the bounds.

Examples

min_partition_cost(arr: list[int], k: int) -> int
Example 1
Inputmin_partition_cost([1, 2, 3, 4], 2)
Output52