import sys
import heapq
input = sys.stdin.readline
n,k=map(int,input().split())
child=list(map(int,input().split()))
total=0
heap=[]
for i in range(1,n):
temt=child[i]-child[i-1]
#엣지 케이스 예외처리!!!!!!!
if k==1:
total+=temt
continue
if not heap or len(heap)<k-1:
heapq.heappush(heap,temt)
elif heap[0]<temt:
total+=heap[0]
heapq.heappop(heap)
heapq.heappush(heap,temt)
else:
total+=temt
print(total)
package programers;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class HappyChild {
static int solution(int[] child, int k, int n) {
int total = 0;
int temt=0;
PriorityQueue<Integer> heap = new PriorityQueue<>();
for (int i = 1; i < n; i++) {
temt=child[i]-child[i-1];
if(k==1){
total+=temt;
continue;
}
if(heap.isEmpty()||heap.size()<k-1){
heap.add(temt);
}
else if(heap.peek()<temt){
total+= heap.poll();
heap.add(temt);
}
else{
total+=temt;
}
}
return total;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int[] child = new int[n];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
child[i] = Integer.parseInt(st.nextToken());
}
int answer=solution(child, k, n);
System.out.println(answer);
}
}
엣지 케이스도 고려해서 코드를 작성하자!!