TLE了9个,求助
#include<iostream>
using namespace std;
int n,d,a[200000],v[200000],t=0;
long long ans;
int findNextCheapest(int x)
{
if(x>0)
{
if(a[x]>=a[x-1]&&x!=findNextCheapest(x-1))
{
return findNextCheapest(x-1);
}
}
int i;
for(i=x+1;i<n;i++)
{
if(a[i]<a[x])
{
return i;
}
}
return i;
}
int main()
{
cin>>n>>d;
for(int i=0;i<n-1;i++) cin>>v[i];
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;)
{
long long s=0;
for(int j=i;j<findNextCheapest(i);j++)
{
s+=v[j];
}
s-=t;
t=0;
ans+=((s+d-1)/d)*a[i];
t=(s+d-1)/d*d-s;
i=findNextCheapest(i);
}
cout<<ans;
}