#include<bits/stdc++.h>
using namespace std;
long long n,d,a[10001],v[10001],f[10001],sheng,sum,t;
struct num{
long long x,id;
};
stack<num>s;
int main()
{
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
scanf("%lld%lld",&n,&d);
for(long long i=1;i<n;i++)scanf("%lld",&v[i]);
for(long long i=1;i<=n;i++)scanf("%lld",&a[i]);
for(long long i=1;i<n;i++)v[i]+=v[i-1];
for(long long i=1;i<=n;i++){
while(!s.empty()&&a[i]<s.top().x)f[s.top().id]=i,s.pop();
s.push((num){a[i],i});
}
for(long long i=1;i<=n;i++)if(f[i]==0)f[i]=n;
for(long long i=1;i!=n;i=f[i]){
t=max(0ll,(v[f[i]-1]-v[i-1]-sheng+d-1)/d);
sum+=t*a[i];
sheng=d*t-(v[f[i]-1]-v[i-1]-sheng);
}
printf("%lld",sum);
return 0;
}