#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, d, a[N], b[N], step;//step表示此时还能走多远
int cheap = INT_MAX, ans;//cheap表示当前最便宜的油价,ans是最终答案
int main(){
cin >> n >> d;//d代表每升油可以前进的距离
for(int i = 1; i <= n - 1; i++){
cin >> b[i];//b[i]是距离
}
for(int i = 1; i <= n; i++){
cin >> a[i];//a[i]是油价
}
cheap = a[1];
for(int i = 1; i <= n - 1; i++){
cheap = min(a[i + 1], cheap);//不断更新最便宜的油价
if(step < b[i]) {
int k = b[i] - step;//k代表还要走多远
ans += cheap * (b[i] / d + 1);//把要走的路的油费加上 (每次仅仅加到刚好到下一站)
step += d * (b[i] / d + 1); //加上每次加完油后能够走的路
}
step -= b[i];
}
cout << ans << '\n';
return 0;
}