#include <bits/stdc++.h>
using namespace std;
int n,v;
double d;
long long ans;
struct aa{
int s;
int money;
}zd[100005];
int _min[100005];
int main(){
cin>>n>>d;
memset(_min,0x3f,sizeof(_min));
//d*=1.0;
zd[1].s=1;
for(int i=2;i<=n;i++){
cin>>v;
zd[i].s=zd[i-1].s+v;
//cout<<zd[i].s<<" ";
}
for(int i=1;i<=n;i++){
cin>>v;
zd[i].money=v;
_min[i]=min(_min[i-1],v);
//cout<<_min[i]<<" ";
}
int i=1;
int wz=1;//现在的位置
int go=0;//现在油量
while(wz<zd[n].s){
wz+=go*d;
go=0;
//go=0;
if(wz>=zd[i].s){
i++;
}
if(wz<zd[i].s){
int x=zd[i].s-wz-go*d;
double y=ceil(x/d);
//cout<<"y"<<y<<endl;
ans+=_min[i-1]*y;
//cout<<"ans"<<ans<<endl;
go+=y;
//wz+=go*d;
}
//cout<<wz<<" "<<i<<endl<<endl;
}
cout<<ans;
return 0;
}