#include<iostream>
#include<cstdio>
#include<cmath>
struct zuoti{
int youjia;
int juli;
}a[100005];
long long sum[100005]={0};
using namespace std;
int main(){
int n,d;
int t,xiaode;
long long summ=0,dangqian=0;
cin >> n >> d;
sum[n+1]=-1;
for(int i=2;i<=n;i++){
cin >> a[i].juli;
sum[i]=sum[i-1]+a[i].juli;
}
for(int i=1;i<=n;i++){
cin >> a[i].youjia;
}
int flag=1;
while(flag<n){
for(int i=flag;i<=n+1;i++){
if(a[i].youjia<a[flag].youjia){
if(i==n+1){
int sevennn;
if((sum[n]-sum[flag]-dangqian)%d) sevennn=(sum[n]-sum[flag]-dangqian)/d+1;
else sevennn=(sum[n]-sum[flag]-dangqian)/d;
int sixxx=summ+sevennn*a[flag].youjia;
cout << sixxx;
return 0;
}
else{
if((sum[i]-sum[flag]-dangqian)%d){
summ+=((sum[i]-sum[flag]-dangqian)/d+1)*a[flag].youjia;
}
else {
summ+=((sum[i]-sum[flag]-dangqian)/d)*a[flag].youjia;
}
dangqian=abs(((sum[i]-sum[flag]-dangqian)/d)*d-sum[i]+sum[flag]);
flag=i;
break;
}
}
}
}
cout << summ;
fclose(stdin);
fclose(stdout);
return 0;
}