아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

초콜릿 뺏어 먹기

시간 제한1초메모리 제한1024 MB

요약
오름차순으로 정렬된 병의 초콜릿 개수가 주어질 때, 매일 i>K인 병 i를 i-K번째 값까지 줄이고 다시 정렬한다. 최대로 먹을 수 있는 초콜릿 수와 그 최소 일수를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 정렬, 배열
정답자
아직 제출이 없습니다

문제

연두는 NN개의 통에 초콜릿을 담아, 초콜릿의 개수가 오름차순이 되도록 일렬로 배열해 놓는다. 즉, (11번째 통의 초콜릿 개수) ≤\le (22번째 통의 초콜릿 개수) ≤⋯≤\le \dots \le (NN번째 통의 초콜릿 개수)이다.

효원이는 매일 조금씩 연두의 초콜릿을 몰래 뺏어 먹을 계획을 세우는 중이다. 연두는 매우 눈치가 없기 때문에, 하루에 한 번 다음 전략으로 초콜릿을 먹으면 절대 눈치채지 못할 것이다.

  1. K<iK<i인 ii를 골라, i−Ki-K번째 통에 있는 초콜릿 개수와 똑같아질 때까지 ii번째 통에서 초콜릿을 꺼내 먹는다.
  2. 그 후 통을 재정렬한다. 즉, 초콜릿 개수가 오름차순이 되도록 통을 재배치한다.

효원이는 연두가 눈치채지 못하는 선에서 최대한 많이, 그리고 최대한 빨리 초콜릿을 먹어 치우고 싶다. 과연 몇 개나 먹을 수 있을까?

입력

첫 번째 줄에 통의 개수 NN과 KK가 주어진다. (1≤K<N≤2 0001 \le K < N \le 2\,000)

두 번째 줄에 처음에 ii번째 통에 들어 있는 초콜릿의 개수 a1,a2,…,aNa_1, a_2, \dots, a_N이 주어진다. (1≤a1≤a2≤⋯≤aN≤2 0001 \le a_1 \le a_2 \le \dots \le a_N \le 2\,000)

출력

연두에게 들키지 않으면서 먹을 수 있는 초콜릿의 최대 개수와, 그 개수의 초콜릿을 먹기 위해 필요한 최소 날짜를 출력한다.

예제2

  1. 예제 1

    입력
    4 2
    1 2 2 3
    
    예상 출력
    4 3
    
  2. 예제 2

    입력
    2 1
    5 5
    
    예상 출력
    0 0