#include<bits/stdc++.h>
using namespace std;
int f[2][50001][2],a[100001],s[100001],n,kk;
int mmin(int a,int b){
if(a==-1)return b;
else if(b==-1)return a;
else return min(a,b);
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>kk;
for(register int i=1;i<=n;i++)cin>>a[i];
for(register int i=1;i<n;i++)s[i]=a[i+1]-a[i];
memset(f,-1,sizeof(f));
f[0][0][0]=f[1][0][0]=0;
for(register int i=2;i<=n;i++){
for(register int k=1;k<=kk;k++){
if(f[(i-1+2)&1][k-1][0]!=-1)f[i&1][k][1]=f[(i-1+2)&1][k-1][0]+s[i-1];
if(f[(i-1+2)&1][k][1]==-1)f[i&1][k][0]=f[(i-1+2)&1][k][0];
else if(f[(i-1+2)&1][k][0]==-1)f[i&1][k][0]=f[(i-1+2)&1][k][1];
else f[i&1][k][0]=min(f[(i-1+2)&1][k][0],f[(i-1+2)&1][k][1]);
}
}
cout<<mmin(f[n&1][kk][0],f[n&1][kk][1]);
}
怎么进行一些优化 qwq