#include<iostream>
#include<cstdio>
typedef long long ll;
using namespace std;
int v[100005],a[100005];
ll ceil(ll x,ll y)
{
return x%y==0?x/y:x/y+1;
}
int main()
{
int n,d,minn=2147483647;
ll s=0,t=0,now=0;
scanf("%d %d",&n,&d);
for(int i=1;i<=n-1;i++)
{
scanf("%d",&v[i]);
t+=v[i];
}
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if (i!=n)
{
minn=min(minn,a[i]);
}
}
if (a[1]==minn)
{
printf("%lld",ceil(t,d)*minn);
return 0;
}
for(int i=1;i<=n-1;i++)
{
ll p=v[i]-now,q,sum=0;
int k=i+1;
s+=ceil(p,d)*a[i];
now=ceil(p,d)*d-p;
while(a[k]>=a[i]&&k<=n-1)
{
sum+=v[k];
k++;
}
if (k>i+1)
{
q=sum-now;
s+=ceil(q,d)*a[i];
now=ceil(q,d)*d-q;
}
i=k-1;
}
printf("%lld",s);
return 0;
}