구간 나누기
시간 제한1초메모리 제한1024 MB
겹치지 않는 연속 구간 K개를 골라 각 구간의 최댓값과 최솟값 차이의 합을 최대로 만드는 값을 K=1부터 R까지 구합니다.
문제
개의 수 이 주어진다. 서로 겹치지 않는 연속한 구간을 정확히 개 잡고, 각 구간의 점수를 모두 더했을 때 가능한 값의 최댓값을 구하는 프로그램을 작성하라.
이 문제에서 구간의 점수는 구간에 속한 수의 최댓값과 최솟값의 차이이다.
정확하게 정의하면 다음과 같다.
다음 조건을 만족하는 개의 정수 에 대해 아래 값을 최대화하라.
여기서
이고, 이다.
입력
첫 번째 줄에 두 정수 ()과 ()이 공백으로 구분되어 주어진다. 프로그램은 인 모든 에 대한 답을 출력해야 한다.
두 번째 줄에 개의 정수 ()이 순서대로 공백으로 구분되어 주어진다.
출력
총 개의 줄에 걸쳐 답을 출력한다. 번째 줄에는 일 때의 답을 출력한다. 즉, 에서 서로 겹치지 않는 연속한 구간을 정확히 개 잡아 각 구간 점수의 합을 구했을 때 가능한 값의 최댓값을 출력한다.
힌트
: 의 한 구간을 잡으면 최적이다.
: , 의 두 구간을 잡으면 최적이다.
: , , 의 세 구간을 잡으면 최적이다.