65pts,两个样例都过了
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
const int MAXN=1e5+5;
int n,d;
int v[MAXN],a[MAXN];
int nxt[MAXN];
signed main(){
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
std::cin>>n>>d;
for(int i=1;i<n;i++)std::cin>>v[i];//距离
for(int i=1;i<=n;i++)std::cin>>a[i];//价格
int now=0;
int you=1e6;
int kilo=0;
for(int i=1;i<=n;i++){
int x;//油的升数
if ((v[i-1]-kilo)%d==0){
x=(v[i-1]-kilo)/d;
kilo=0;
}else{
x=(v[i-1]-kilo)/d+1;
kilo=(x*d)-(v[i-1]-kilo);
}
nxt[now]+=x*a[now];
if(a[i]<you){
you=a[i];
now=i;
}
}
int ans=0;
for(int i=1;i<=n;i++)ans+=nxt[i];
std::cout<<ans<<endl;
return 0;
}