#include<bits/stdc++.h>
using namespace std;
int n,c,ans_now,ans=1e7,total;
bool m[51],can;
struct light
{
int x,w;
}l[51];
bool cmp(light p,light q)
{
return p.x<q.x;
}
void dfs(int place)
{
bool k=false;
int i=place;
while(m[i]&&i<n)i++;
if(!m[i])
{
m[i]=1;
ans_now+=total*(l[i].x-l[place].x);
total-=l[i].w;
dfs(i);
total+=l[i].w;
ans_now-=total*(l[i].x-l[place].x);
m[i]=0;
k=1;
i=place;
}
while(m[i]&&i>1)i--;
if(!m[i])
{
m[i]=1;
ans_now+=total*(l[place].x-l[i].x);
total-=l[i].w;
dfs(i);
total+=l[i].w;
ans_now-=total*(l[place].x-l[i].x);
m[i]=0;
k=1;
i=place;
}
if(!k)ans=min(ans_now,ans);
}
int main()
{
scanf("%d%d",&n,&c);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&l[i].x,&l[i].w);
total+=l[i].w;
if(!can&&i==c)
{
c=l[i].x;
total-=l[i].w;
m[i]=can=1;
}
}
sort(l+1,l+n+1,cmp);
for(int i=1;i<=n;i++)
{
if(c==l[i].x)
{
c=i;
break;
}
}
dfs(c);
printf("%d",ans);
return 0;
}
蒟蒻怀疑需要亿点点小小的玄学剪枝