这是AC的:
while(l<r)
{
**LL mid=(l + r + 1) >> 1;**
if(check(mid)<k)r=mid-1;
else l=mid;
}
printf("%lld",l);
这是TLE的:
while(l<r)
{
**LL mid=(l + r) >> 1;**
if(check(mid)<k)r=mid-1;
else l=mid;
}
printf("%lld",l);
check函数:
LL check(LL m)
{
LL x=0,res=0;
for(int i=1;i<=n;i++)
{
x=max(x+a[i],0ll);
if(x>=m)
{
x=0;
res++;
}
}
return res;
}