해설
행 구간의 길이를 , 그 구간의 원소 합을 라고 하자. 열 구간의 길이를 , 그 구간의 원소 합을 라고 하자.
이 직사각형의 가중치 합은 다음과 같다.
따라서 각 길이에 대해 가능한 최대 구간 합만 중요하다. 를 에서 길이가 정확히 인 연속부분수열 합의 최댓값이라 하고, 를 에서 길이가 정확히 인 연속부분수열 합의 최댓값이라고 하자. 정답은 다음 값이다.
점 들의 위쪽 볼록 껍질과 점 들의 위쪽 볼록 껍질만 남기면 된다. 어떤 점이 위쪽 볼록 껍질 아래에 있으면, 모든 선형 목적식 에 대해 그 점은 최적이 될 수 없기 때문이다.
수열 에 대해 임의의 실수 가 주어졌을 때
은 각 원소에 를 더한 수열의 최대 연속부분수열 합과 같다. 따라서 카데인 알고리즘으로 위쪽 볼록 껍질의 한 접점을 구할 수 있다. 이 접점 질의를 이용해 볼록 껍질을 재귀적으로 복원할 수 있다.
두 수열의 볼록 껍질을 모두 구한 뒤에는 한쪽 껍질의 각 점에 대해 다른 쪽 껍질에서 선형 함수의 최댓값을 이분 탐색하거나, 각도 순서로 보며 회전하는 캘리퍼스를 사용하면 된다.
정답의 절댓값은 비트 정수 범위 안에 들어간다.
시간 복잡도는 구현 방식에 따라 또는 그와 비슷한 수준이다.