#include<bits/stdc++.h>
#define _rep(i,a,b) for(int i=(a);i<=(b);i++)
#define _antirep(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
typedef long long lxl;
const int N=1e5+5,mod=998244353;
lxl n,d,v[N],a[N];
lxl ans;
int main()
{
scanf("%lld%lld",&n,&d);
_rep(i,2,n) scanf("%lld",v+i);
_rep(i,2,n) v[i]+=v[i-1];
_rep(i,1,n) scanf("%lld",a+i);
int i=1,j=1;
lxl lsts=0;
while(i<n)
{
while(a[i]<=a[j]&&j<n) j++;
lxl lucheng=v[j]-v[i];
lxl l=0,r=lucheng+1,mid;
while(l+1<r)
{
mid=l+r>>1;
if(1ll*mid*d+lsts>=lucheng) r=mid;
else l=mid;
}
ans+=r*a[i];
lsts=r*d+lsts-lucheng;
i=j;
}
printf("%lld",ans);
return 0;
}