代码如下
#include <bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
const int INF=0x3f3f3f3f;
int n,d;
int v[MAXN]={};
int a[MAXN]={};
int f[MAXN]={};
signed main() {
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
cin>>n>>d;
int cnt=0;
int sum=0;
int minn=INF,t=1;
for(register int i=1;i<=n-1;i++) {
cin>>v[i];
}
for(register int i=1;i<=n;i++) {
cin>>a[i];
}
for(register int i=1;i<=n-1;i++) {
sum=sum+v[i];
if(minn>a[i]) {
minn=a[i]; t=i;
}
if(cnt*d<sum) {
int teg=sum-cnt*d;
if(teg%d==0) {
f[t]=f[t]+teg/d;
cnt=cnt+teg/d;
}
else if(teg%d!=0) {
f[t]=f[t]+teg/d+1;
cnt=cnt+teg/d+1;
}
}
}
int ans=0;
for(register int i=1;i<=n;i++) {
ans=ans+f[i]*a[i];
}
cout<<ans<<endl;
return 0;
}