#include<iostream>
using namespace std;
typedef long long ll;
int main(){
ll n,d,v[100010],a[100010]={0};
ll ans=0,now=0;//now是当前位置
cin>>n>>d;
for(ll i=0;i<n-1;i++){
cin>>v[i];
}
for(ll i=0;i<n;i++){
cin>>a[i];
}
ll shen=0;
while(true){
bool fl=true;
if(now==n-1) break;
ll min=a[now],mini=now;//最小值与位置
for(ll i=now;i<n;i++){
if(a[i]<min){
min=a[i];
mini=i;
fl=false;
break;
}
}//找前方最小值
ll js=0;//计数
if(fl){//没找到就买完
for(ll i=now;i<n;i++){
js+=v[i];
}
int ansa=(js-shen)/d*a[now]+1;
if((js-shen)%d==0) ansa-=1;
cout<<ansa+ans;
return 0;
}
for(ll i=now;i<mini;i++){
js+=v[i];
}//算路程
ll yo=(js-shen)/d+1;//要买几升
if((js-shen)%d==0) yo-=1;//整除-1
ans+=yo*a[now];
shen+=yo*d-js;//开完后剩的油
now=mini;
//out<<now<<' '<<ans<<' '<<shen<<' '<<js<<' '<<yo<<endl;
}
cout<<ans;
}
AC11,12,14,15,16,17,19,20 剩下wa