Minimize k , s.t. condition(k) is True
[ f ][ f ][ f ][ t ][ t ][ t ][ t ][ t ] └── ans
def binary_search(search_space) -> int: left, right = min(search_space), max(search_space) while left < right: mid = left + (right - left) // 2 if condition(mid): right = mid else: left = mid + 1 return left