#include<bits/stdc++.h>
using namespace std;
struct node{
long long dis,dj;
}a[100005];
int main()
{
long long n,m;
cin>>n>>m;
a[1].dis=0;
for(long long i=2;i<=n;i++)
{
long long x;
cin>>x;
a[i].dis=a[i-1].dis+x;
}
for(int i=1;i<=n;i++)
{
long long x;
cin>>x;
a[i].dj=x;
}
long long i=1,lc=0,sum=0;
while(i!=n)
{
long long oldi=i,min_dj=a[i].dj;
bool cmp=0;
while(min_dj<=a[i].dj)
{
i++;
if(i==n) break;
}
long long k=(a[i].dis-a[oldi].dis-lc)/m+((a[i].dis-a[oldi].dis-lc)%m!=0);
sum+=k*a[oldi].dj;
lc=a[oldi].dis+lc+k*m-a[i].dis;
}
cout<<sum;
return 0;
}