#include <bits/stdc++.h>
#define maxn 100010
std::vector<int> e;
long long v[maxn], a[maxn], s[maxn];
int main()
{
int n, d;
std::cin >> n >> d;
for (int i = 1; i <= n - 1; i++)
{
std::cin >> v[i];
s[i] = s[i - 1] + v[i];
}
for (int i = 1; i <= n; i++)
{
std::cin >> a[i];
if (e.empty())
e.push_back(i);
else if (a[e.back()] > a[i])
e.push_back(i);
}
long long ans = 0;
double l = 0;
for (int i = 0; i < e.size() - 1; i++)
{
int x = e[i], y = e[i + 1];
double dis = s[y - 1] - s[x - 1];
// std::cout << "dis: " << (dis - l) << '\n';
ans += a[e[i]] * std::ceil((dis - l) / d);
l = std::ceil(dis / d) * d - (dis - l);
// std::cout << b << ' ' << l << '\n';
// std::cout << e[i] << ' ' << b << '\n';
}
std::cout << ans << '\n';
}
给个数据啥的也行。