题目描述
由于长期没有得到维修,A国的高速公路上出现了 nn 个坑。为了尽快填补好这 nn 个坑,A国决定对 mm 处地段采取交通管制。为了求解方便,假设A国的高速公路只有一条,而且是笔直的。现在给出 nn 个坑的位置,请你计算,最少要对多远的路段实施交通管制?
输入格式
输入数据共两行,第一行为两个正整数 n,m(2≤m≤n≤15000)n,m(2≤m≤n≤15000)。第二行给出了 nn 个坑的坐标(坐标值均在长整范围内,按从小到大的顺序给出,且不会有两个点坐标相同)。
输出格式
仅一行,为最小长度和。
输入输出样例
输入 #1复制
18 4 3 4 6 8 14 15 16 17 21 25 26 27 30 31 40 41 42 43
输出 #1复制
25
说明/提示
[样例说明]
交通管制的地段分别为:3−8,14−21,25−31,40−433−8,14−21,25−31,40−43。
C++代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int a[n+10];
for(int i=1;i<=n;i++){
cin>>a[i];
}
int b[n+10];
for(int i=1;i<n;i++){
b[i]=a[i+1]-a[i]-1;
}
sort(b+1,b+n,greater<int>());
int sum=a[n]-a[1]+1;
for(int i=1;i<m;i++){
sum-=b[i];
}
cout<<sum;
return 0;
}