대회 점수

문제를 순서대로 읽되, 기억할 수 있는 k개 중에서 풀이 시간이 가장 짧은 문제를 먼저 풀고, 모든 문제의 제출 시간 합을 구한다.

보통4시뮬레이션그리디면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

n개의 문제로 이루어진 프로그래밍 대회에 참가한다. 문제를 한 번 읽으면 그 문제를 푸는 데 걸리는 시간을 정확히 알아낼 수 있고, 읽는 시간은 0이라고 본다. 다만 머릿속에 동시에 담아 둘 수 있는 문제는 최대 k개다.

i번째 문제를 푸는 데 걸리는 시간을 tit_i라고 하자. 대회 전략은 다음과 같다.

  1. 처음 k개의 문제를 읽는다.
  2. 읽어 둔 문제 가운데 아직 풀지 않았고 푸는 시간이 가장 짧은 문제를 고른다. 가장 짧은 문제가 여러 개면 그중 아무것이나 고른다.
  3. 고른 문제를 풀고, 아직 읽지 않은 문제가 남아 있으면 그다음 문제를 읽는다.
  4. 풀지 않은 문제가 남아 있으면 2번으로 돌아간다.

한 문제의 제출 시각은 대회 시작부터 그 문제를 다 푼 순간까지 흐른 시간이다. 페널티 시간은 모든 문제의 제출 시각을 더한 값이다. 문제의 순서가 주어질 때 이 전략의 페널티 시간을 구한다.

2번에서 어느 문제를 고르든 페널티 시간은 같으므로 답은 하나로 정해진다.

입력

첫째 줄에 정수 n과 k가 공백으로 구분되어 주어진다 (1kn3001 \le k \le n \le 300).

이어지는 n개의 줄 가운데 i번째 줄에는 정수 tit_i가 주어진다 (1ti1061 \le t_i \le 10^6).

출력

페널티 시간을 한 줄에 정수 하나로 출력한다.