在洛谷上测的90分,小图灵上85分。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+5;
ll n,d,v[N],sum[N],a[N],ans,lst;
ll gsum(ll l,ll r){ return sum[r]-sum[l]; }
int main(){
cin>>n>>d;
for(ll i=2;i<=n;i++) scanf("%lld",v+i);
for(ll i=1;i<=n;i++) scanf("%lld",a+i);
for(ll i=2;i<=n;i++) sum[i]=sum[i-1]+v[i];
ll i=1;
while(i<n){
ll j=i+1;
while(j<n&&a[j]>a[i]) j++;
ll need=ceil(1.0*(gsum(i,j)-lst)/d);
if(need>0){
ans+=need*a[i];
lst=lst+need*d-gsum(i,j);
}
i=j;
}
cout<<ans;
return 0;
}