문제 설명
(초1)
\(N\)개의 자연수가 좌우로 배열되어 있다. 여러분은 이 중 \(K\)개를 골라야 한다. 고를 때는 \(K\)개 모두를 한번에 골라야 한다.
여러분이 고른 수 각각에 대해서 그 수의 점수를 계산할 것이다. 점수는 자신의 수에서 자신의 왼쪽에 있는 수 중 선택된 수의 개수를 뺀 값이다. 이렇게 고른 수 각각에 그 점수를 계산한 후 전체점수는 계산된 점수들의 합이다. 여러분은 전체점수가 최대가 되도록 K개의 수를 골라야 한다.
예를 들어서, \(N = 5\)개의 자연수가 순서대로 \(2 3 1 2 1\) 로 주어지고, \(K = 3\)이라고 하자. 만약 첫 번째 \(2\)와 두 개의 \(1\)을 골랐다면, 각 수의 점수를 계산해서 나열하면 \(2 0 −1\)과 같다. 따라서 전체 점수는 \(1\)이다. 만약 첫 번째 \(2\)와 3, 그리고 두 번째 \(2\)를 고르고, 각 수의 점수를 계산해서 나열하면, \(2 2 0\)과 같다. 따라서 전체점수는 \(4\)이다. 이 예에서 전체점수의 최댓값은 \(4\)이다.
\(N\)개의 자연수 배열과 양의 정수 \(K\)가 주어질 때, 전체점수의 최댓값을 출력하는 프로그램을 작성하시오.
입력 설명
첫 번째 줄에 \(N\)과 \(K\)가 공백 하나를 사이로 두고 주어진다. 두 번째 줄에 \(N\)개의 자연수가 공백 하나를 사이에 두고 주어진다.
- \(1 ≤ N ≤ 5 000\)
- \(1 ≤ K ≤ N\)
- 주어지는 자연수는 \(1\) 이상 \(100000\) 이하
- (4점) \(N \le 3. \)
- (25점) \(N \le 20. \)
- (7점) \(K = 1. \)
- (9점) \(K = 2. \)
- (15점) 주어지는 \(N\)개의 수가 단조증가(감소하지 않는 순서)로 정렬되어 있다. 이는 즉, \(N\)개의 수 각각에 대해 그 수의 왼쪽에는 해당 수 이하의 값들만 있고, 오른쪽에는 해당 수 이상의 값들만 있다는 뜻이다.
- (40점) 추가 제약 조건 없음.
출력 설명
첫 번째 줄에 주어진 \(N\)개의 수 중 \(K\)개의 수를 고를 때, 전체점수의 최댓값을 출력한다.
입력 예시 Copy
5 3
2 3 1 2 1
출력 예시 Copy
4