rt,洛谷60分,小图灵35分
#include <bits/stdc++.h>
#define int long long
#define MAXN 0x3f3f3f3f3f3f3f3f
#define MINN -0x3f3f3f3f3f3f3f3f
using namespace std;
const int N=1e5+9;
int n,d,u,sum[N],a[N],ans;
signed main(){
// freopen("road.in","r",stdin);
// freopen("road.out","w",stdout);
scanf("%lld%lld",&n,&d);
for(int i=2;i<=n;i++){
scanf("%lld",&u);
sum[i]=sum[i-1]+u;
}
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
int f=1;
int x=0;
for(int i=1;i<=n;i++){
if(a[f]<=a[i]) continue;
int tmp=sum[i]-sum[f]-x;
ans+=tmp%d==0?tmp/d*a[f]:(tmp/d+1)*a[f];
x=d-tmp%d;
f=i;
}
if(f^n){
int tmp=sum[n]-sum[f]-x;
ans+=tmp%d==0?tmp/d*a[f]:(tmp/d+1)*a[f];
}
printf("%lld",ans);
return 0;
}