수열의 분할
시간 제한8초메모리 제한1024 MB
수열을 연속된 부분으로 나눌 때, 각 부분 합의 제곱을 모두 더한 값 중 k번째로 큰 값을 구합니다.
문제
길이가 인 정수 수열 이 주어진다. 개의 정수 수열 ()이 다음 두 조건을 모두 만족하면 을 의 분할이라고 부른다.
- 각 ()는 길이가 1 이상인 정수 수열이다.
- 을 이 순서대로 이어 붙이면 와 같다.
예를 들어 , 는 모두 의 분할이다.
정수 수열 에 대해 원소 합의 제곱을 라고 한다. 의 분할 에 대해 을 이 분할의 점수라고 부른다. 예를 들어 의 점수는 이다.
의 분할은 정확히 개 있다. 의 모든 분할에 대한 점수를 내림차순으로 정렬했을 때 번째 값을 구하라.
입력
입력은 여러 개의 데이터셋으로 이루어진다. 데이터셋의 수는 30을 넘지 않는다. 각 데이터셋은 다음 형식으로 주어진다.
과 는 정수이며 , 을 만족한다. 각 는 수열 의 번째 원소인 정수이며 을 만족한다.
입력의 끝은 0 0 한 줄로 나타낸다.
출력
각 데이터셋에 대해 의 모든 분할 점수 중 번째로 큰 값을 한 줄에 출력하라.