#include<bits/stdc++.h>
using namespace std;
long long n,d,v[100100],a[100100],money=0;
double f=0;
long long find(long long x){
for(int i=x;i<=n;i++){
if(a[x]>a[i]) return i;
}
return 0;
}
long long work(long long from,long long to){
long long s=v[to-1]-v[from-1];
long long you=ceil((s*1.0/d*1.0)-f);
f=you-((s*1.0/d)-f);
return you*a[from];
}
int main(){
cin>>n>>d;
for(int i=1;i<=n-1;i++){
cin>>v[i];
if(i!=1) v[i]+=v[i-1];
}
for(int i=1;i<=n;i++) cin>>a[i];
long long from=1,to;
while(true){
to=find(from);
money+=work(from,to);
if(to==n||from==n) break;
from=to;
}
cout<<money<<endl;
return 0;
}
99孩子(QwQ)