#include<bits/stdc++.h>
using namespace std;
long long n,d,a[100005],v[100005],ans;
int buy(long long x)
{
if(x%d!=0)
return (x/d+1);else
return (x/d);
}
int main()
{
cin>>n>>d;
for(int i=2;i<=n;++i)
{
cin>>a[i];
a[i]+=a[i-1];
}
for(int i=1;i<=n;++i)
cin>>v[i];
int road=0,xb=1;
while(road<a[n])
{
int ls=xb;
for(int i=xb+1;i<n;++i)
if(v[i]<v[xb])
{
ls=i;
break;
}
if(ls!=xb)
{
ans+=buy(a[ls]-road)*v[xb];
road+=buy(a[ls]-road)*d;
xb=ls;
}else
{
cout<<ans+buy(a[n]-road)*v[xb];
return 0;
}
}
cout<<ans;
}
WA #17……给我错误数据或者告诉我哪里错误都行,玄关QwQ