https://www.acmicpc.net/problem/2212
K개의 수신기 범위를 최소화 하는 문제
각 좌표간의 차이 값을 구한 후 큰 것 부터 빼서 해결한다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int N, K;
cin>>N>>K;
vector<int> positions(N);
vector<int> diff(N-1);
for(auto &pos:positions){
cin>>pos;
}
sort(positions.begin(), positions.end());
for(int i=0; i<N-1; ++i){
diff[i]=positions[i+1]-positions[i];
}
sort(diff.begin(), diff.end(), greater<int>());
int ret=0;
for(int i=K-1; i<diff.size(); ++i){
ret+=diff[i];
}
cout<<ret;
//std::cout << "Hello, World!" << std::endl;
return 0;
}