RT,人麻了
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<map>
#include<queue>
#include<stack>
#define INF 0x3f3f3f3f
#define int long long
#define MAXN 300001
using namespace std;
int n,s,f[MAXN],sumc[MAXN],sumt[MAXN],q[MAXN],l,r;
int check(int g,int h,int i){
int y=r;
while(g<h){
int mid=(g+h)/2;
if((f[q[mid+1]]-f[q[mid]])<=(s+sumt[i])*(sumc[q[mid+1]]-sumc[q[mid]])) {
g=mid+1;
}
else h=mid;
//if(i==5&&mid==2) cout<<g<<" "<<h<<"\n";
}
//if(f[g]-f[g-1]<=(s+sumt[i])*(sumc[g]-sumc[g-1])&&f[g+1]-f[g]>=(s+sumt[i])*(sumc[g+1]-sumc[g])) y=g;
return q[g];
}
signed main(){
ios::sync_with_stdio(false);
cin>>n>>s;
for(int i=1,c,t;i<=n;i++) {
cin>>t>>c;
sumc[i]=sumc[i-1]+c;
sumt[i]=sumt[i-1]+t;
}
f[0]=0;
l=r=0;
q[r++]=0;
for(int i=1;i<=n;i++){
int p=check(l,r,i);
//cout<<p<<"\n";
f[i]=f[p]+sumt[i]*(sumc[i]-sumc[p])+s*(sumc[n]-sumc[p]);
while(r-l>=2&&(f[i]-f[q[r-1]])*(sumc[q[r-1]]-sumc[q[r-2]])<=(f[q[r-1]]-f[q[r-2]])*(sumc[i]-sumc[q[r-1]])) r--;
q[r++]=i;
}
cout<<f[n];
return 0;
}