Code
#include <bits/stdc++.h>
#define N 105
typedef long long LL;
LL n, c;
LL dis[N], w[N], val[N], f[N][N][2];
inline LL pt (LL i, LL j, LL l, LL r) {
return (dis[j] - dis[i]) * (val[n] - val[r] + val[l - 1]);
}
int main(){
memset (f, 0x3f, sizeof(f));
std::cin >> n >> c;
for (LL i = 1; i <= n; ++i){
std::cin >> dis[i] >> w[i];
val[i] = val[i - 1] + w[i];
}
f[c][c][0] = f[c][c][1] = 0;
for (LL len = 2; len <= n; ++len) {
for (LL i = 1, j = len; j <= n; ++i, ++j) {
f[i][j][0] = std::min (f[i + 1][j][0] + pt(i, i + 1, i + 1, j), f[i + 1][j][1] + pt(i, j, i + 1, j));
f[i][j][1] = std::min (f[i][j - 1][0] + pt(i, j, i, j - 1), f[i][j - 1][1] + pt(j - 1, j, i, i- 1));
}
}
std::cout << std::min (f[1][n][0], f[1][n][1]);
return 0;
}