Given a list of integers and an integer k, the goal is to split the list into k non-empty consecutive parts and maximize the sum of squared values of each part.
The problem requires finding the optimal way to split the list to achieve the highest score.
Constraints include list length up to 200,000, handling negative and positive numbers, and time and memory limits.
A high-level solution involves using prefix sums for fast range sums and dynamic programming over splits.
The Li Chao tree data structure helps optimize the quadratic inner maximization, leading to an overall complexity of O(k * n log n).
The JavaScript implementation uses BigInt to prevent overflow and includes a Li Chao class for maximum line evaluation.
The DP loop and line insertion in the implementation facilitate finding the highest score by splitting the array into k parts.
The implementation handles the problem efficiently for large n and moderate k.
Overall, the approach involves dynamic programming, prefix sums, and the Li Chao tree data structure to solve the problem effectively.
The code snippet provided offers a solution to the problem and demonstrates the practical implementation in JavaScript.
The example input with the list [1, 2, -1, 2, 3] and k=2 outputs a maximum score of 29.