Binary Search
Jump to navigation
Jump to search
discrete
int mask=1,ans=0;
while(mask<max)mask<<=1;
while(mask>0) {
if(ans+mask<max && function(ans+mask)>=0)ans|=mask;
mask>>=1;
}
continuous
double mask=1,ans=0;
while(mask<max)mask*=2;
while(mask>epsilon) {
if(ans+mask<max && function(ans+mask)>=0)ans+=mask;
mask/=2;
}