#include<bits/stdc++.h>
#include<vector>
using namespace std;
#define ll long long
inline ll read(){
ll x=0,f=1;char c=getchar();
while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
return f*x;
}
const int N=1e5+10;
int n,d;
int v[N],p[N],sumv[N];
int main(){
n=read(),d=read();
for(int i=2;i<=n;i++){
cin>>v[i];
sumv[i]=sumv[i-1]+v[i];
}
for(int i=1;i<=n;i++){
cin>>p[i];
}
int min=p[1];
vector<int>down;
down.push_back(1);
for(int i=2;i<=n;i++){
if(p[i]<min) down.push_back(i);
}
if(down.size()==1){
cout<<ceil((sumv[n]-sumv[1]) * 1.0/d)*p[1];
return 0;
}
int cu=1;
int price=0,dis=0;
for(int i=1;i<down.size();i++){
int nums=ceil((sumv[down[i]]-sumv[cu]-dis)*1.0/d);
price+=nums*p[cu];
dis=nums*d-(sumv[down[i]]-sumv[cu]-dis);
cu=down[i];
}
cout<<price<<endl;
return 0;
}