7
/思路:只要将最长长度求出来,然后求出每两个区间距离, //最后用sum减去m-1个最大的两个区间的距离。
#include <cstdio> #include <string> #include <queue> #include <cmath> #include <stack> #include <vector> #include <algorithm> #include <map> using namespace std; #define INF 0x3f3f3f3f #define CLR(a,b) memset(a,b,sizeof(a)) #define PI acos(-1.0) #define LL long long int main(void){ freopen("题.txt", "r", stdin); int n, m; int arr[201], mid[200]; int i, j; int sum; while(scanf("%d%d", &n, &m) != EOF){ j = 0; sum = 0; for(i = 0; i < n; i++){ scanf("%d", &arr[i]); } sort(arr, arr + n); for(i = 1; i < n; i++){ mid[j++] = arr[i] - arr[i-1]-1; } sort(mid, mid + j); sum = arr[n-1]; for(i = j-1; i > j - m; i--){ sum -= mid[i]; } printf("%d\n", sum); } return 0; }