#include<bits/stdc++.h>
using namespace std;
#define ll long long
int a[100005],v[100005];
int main(){
// freopen ("road2.in","r",stdin);
// freopen ("road2.out","w",stdout);
int n,d;
scanf ("%d%d",&n,&d);
for (int i=1;i<n;i++)scanf ("%d",&v[i]);
for (int i=1;i<=n;i++)scanf ("%d",&a[i]);
int minn=a[1];
int m=0,way,last=0;
for (int i=1;i<=n-1;i++){
if (a[i]<=minn){
if (way*1.0/d==way/d)m+=way/d*minn,last=0;
else m+=(way/d+1)*minn,last=(way/d+1)*d-way;
minn=a[i];
way=(-1)*last;
}
way+=v[i];
}
if (way*1.0/d==way/d)m+=way/d*minn;
else m+=(way/d+1)*minn;
printf ("%d",m);
return 0;
}
大小样例都过了,大样例一开long long就错了。下载了测试点一,在Dev中答案是对的,但一提交就全错。