#include using namespace std; using LL = long long; int main() { // 1. 入力情報取得. LL N, K; scanf("%llu %llu", &N, &K); LL A[N]; for(int i = 0; i < N; i++) scanf("%llu", &A[i]); // 2. 昇順sort. sort(A, A + N); // 3. 段差 の 大きさ を 調査する. // ex. // 5 2 // 1 10 11 2 9 // -> 1 2 9 10 11 と並び替えると, // 段差が, 1, 7, 1, 1 なので, 段差 7 を 無くす形で, 集合に分けたいはず. // -> 段差 7 を取り除くと, 残りは 1, 1, 1 であり合計 3 なので, // これが解答になっていると想定される. LL dp[N - 1]; for(int i = 1; i < N; i++) dp[i - 1] = A[i] - A[i - 1]; // 4. 集合の大きさの総和の最小値を計算. LL ans = 0; sort(dp, dp + N - 1); // for(int i = 0; i < N - 1; i++) cout << dp[i] << " "; for(int i = 0; i < N - K; i++) ans += dp[i]; // 5. 出力. printf("%llu\n", ans); return 0; }