rt,还挺难调的
#include <bits/stdc++.h>
using namespace std;
int p[51],w[51],s[51],n,sum,ans = 2e9;
bool vis[51];
int W()
{
int res = 0,tmp = sum;
for (int i = 2;i <= n;i++)
res += tmp*abs(p[s[i]]-p[s[i-1]]),tmp -= w[s[i]];
ans = min(ans,res);
return res;
}
void sa()
{
double T = 1145;
while(T > 1e-9)
{
int x = rand()%(n-1)+2,y = rand()%(n-1)+2;
if (x == y) continue;
int k = W();swap(s[x],s[y]);
int now = W(),del = now-k;
if (del > 0 && exp(-del/T)*RAND_MAX < rand()) swap(s[x],s[y]);
T *= 0.99;
}
}
int main()
{
int c;cin >> n >> c;
for (int i = 1;i <= n;i++)
cin >> p[i] >> w[i],sum += w[i];
s[1] = c;vis[c] = 1;
for (int i = 2;i <= n;i++)
{
int tmp = 2e9,pos;s[i] = s[i-1];
for (int j = 1;j <= n;j++)
{
if (vis[j]) continue;
if (abs(p[j]-p[s[i]]) < tmp)
tmp = abs(p[j]-p[s[i]]),pos = j;
}
vis[s[i] = pos] = 1;
}
sum -= w[s[1]],ans = W();
while(clock()*1.0/CLOCKS_PER_SEC < 0.95) sa();
cout << ans;
return 0;
}