record
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
long long n,d,v[N],y[N];
struct Point{
long long a,id;
}q[N];
bool cmp(Point a,Point b){
if(a.a!=b.a) return a.a<b.a;
return a.id<b.id;
}
int main(){
cin>>n>>d;
for(int i=1;i<=n-1;++i){
cin>>v[i];
v[i]+=v[i-1];
y[i]=(v[i]+d-1)/d;
}
for(int i=1;i<=n;++i){
cin>>q[i].a;
q[i].id=i;
}sort(q+1,q+n+1,cmp);
long long r=n-1,sum=0,k=1;
for(;k<=n;){
if(q[k].id<r){
sum+=(y[r]-y[q[k].id-1])*q[k].a;
r=q[k].id-1;
}k++;
}
cout<<sum;
return 0;
}