수 고르기
의견: 0
\(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\)가 주어질 때, 전체점수의 최댓값을 출력하는 프로그램을 작성하시오.
- \(1 ≤ N ≤ 5,000\)
- \(1 ≤ K ≤ N\)
- 주어지는 자연수는 \(1\) 이상 \(100,000\) 이하
첫 번째 줄에 \(N\)과 \(K\)가 공백 하나를 사이로 두고 주어진다. 두 번째 줄에 \(N\)개의 자연수가 공백 하나를 사이에 두고 주어진다.
첫 번째 줄에 주어진 \(N\)개의 수 중 \(K\)개의 수를 고를 때, 전체점수의 최댓값을 출력한다.
| 서브태스크 | 점수 | 설명 |
|---|---|---|
1 | 4점 | |
2 | 25점 | |
3 | 7점 | |
4 | 9점 | |
5 | 15점 | |
6 | 40점 | |
Subtask 1 | 4점 | N ≤3. |
Subtask 2 | 25점 | N ≤20. |
Subtask 3 | 7점 | K = 1. |
Subtask 4 | 9점 | K = 2. |
Subtask 5 | 15점 | 주어지는N개의수가단조증가(감소하지않는순서)로정렬되어있다. 이는즉, N개의수각 각에대해그수의왼쪽에는해당수이하의값들만있고, 오른쪽에는해당수이상의값들만있다는 뜻이다. |
Subtask 6 | 40점 | 추가제약조건없음. 입력형식 첫번째줄에N과K가공백하나를사이로두고주어진다. 두번째줄에N개의자연수가공백하나를 사이에두고주어진다. 출력형식 첫번째줄에주어진N개의수중K개의수를고를때, 전체점수의최댓값을출력한다. |
5 3
2 3 1 2 1
4
6 2
4 1 5 2 6 3
10
막혔나요? 코인으로 단계별 힌트를 잠금 해제하세요 — 첫 힌트는 가벼운 방향 제시, 뒤로 갈수록 더 많이 알려 줍니다. 문제를 풀면 모든 힌트가 무료로 공개됩니다.
riseoj 작성
출처 올림피아드 > 한국정보올림피아드 > KOI 2020 > 2차 대회 > 초등부 1번
평가 및 의견
수 고르기
아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.
풀이 제출
수 고르기