RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
KOI00077

수 고르기

Silver IV 실버 IV
난이도
2s
시간 제한
512MB
메모리 제한
0
맞았습니다!!
4
제출 수
0.0%
정답률
레이팅

의견: 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개의수를고를때, 전체점수의최댓값을출력한다.

예제 1
입력
5 3
2 3 1 2 1
출력
4
예제 2
입력
6 2
4 1 5 2 6 3
출력
10
힌트

막혔나요? 코인으로 단계별 힌트를 잠금 해제하세요 — 첫 힌트는 가벼운 방향 제시, 뒤로 갈수록 더 많이 알려 줍니다. 문제를 풀면 모든 힌트가 무료로 공개됩니다.

문제 정보

riseoj 작성

출처 올림피아드 > 한국정보올림피아드 > KOI 2020 > 2차 대회 > 초등부 1번

평가 및 의견

수 고르기

개요
출제자 난이도 Silver IV 실버 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

수 고르기

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8