点击查看代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1000000+7;
ll a[N];
ll b[N];
ll c[N];
ll n,x;
bool check(ll w)
{
ll ans=0;
ll o,oo=c[w];
for(int i=1;i<n;i++) b[i]=a[i];
ll idx=1;
b[n]=999999999;
for(int i=w+1;i<=n;i++)
{
o=0;
o=oo;
if(o<=b[i])
{
b[i]=o;
for(int j=idx;j<i;j++) b[j]=0;
idx=i;
oo=b[i];
}
else
{
o=b[i];
for(int j=idx;j<i;j++)
{
if(o>=b[j])
{
o-=b[j];
b[j]=0;
}
else
{
idx=j-1;
b[j]-=o;
break;
}
}
if(b[i-w]!=0)
{
oo=oo-b[i-w];
}
idx=max(idx,i-w+1);
}
}
ans=b[n];
if(ans>=x*2) return true;
else
return false;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n>>x;
for(int i=1;i<n;i++)
{
cin>>a[i];
c[i]=a[i]+c[i-1];
}
ll l=1,r=n;
while(l<r)
{
ll mid=(l+r)>>1;
if(check(mid))
{
r=mid;
}
else
{
l=mid+1;
}
}
cout<<l;
return 0;
}