```cpp
#include<bits/stdc++.h>
using namespace std;
int a[51];
int w[51];
int dd[51];
int qdd[51];
int f[51][51][2];
int main(){
int n,c;
cin>>n>>c;
for(int i=1;i<=n;i++){
cin>>a[i]>>w[i];
dd[i]=dd[i-1]+w[i];
}
for(int i=n;i;i--){
qdd[i]=qdd[i+1]+w[i];
}
memset(f,0x3f,sizeof(f));
for(int l=c;l;l--){
for(int r=c;r<=n;r++){
if(l==c&&r==c){
f[l][r][0]=0;
f[l][r][1]=0;
}else{
f[l][r][0]=min(f[l][r][0],f[l+1][r][0]+(a[l+1]-a[l])*(dd[l]+qdd[r+1]));
f[l][r][0]=min(f[l][r][0],f[l+1][r][1]+(a[r]-a[l])*(dd[l]+qdd[r+1]));
f[l][r][1]=min(f[l][r][1],f[l][r-1][0]+(a[r]-a[l])*(dd[l-1]+qdd[r]));
f[l][r][1]=min(f[l][r][1],f[l][r-1][1]+(a[r]-a[r-1])*(dd[l-1]+qdd[r]));
}
}
}
cout<<min(f[1][n][0],f[1][n][1]);
return 0;
}
```
by Wzl111 @ 2024-04-06 13:28:15