class Solution:
    def upper_bound_(self , num , value , arr ):
        if arr[num - 1] < value:
            return num + 1
        left=0
        right=num-1
        while left<right:    # 当left=right时停止,题目要寻找第一个
            mid = int((left+right)/2)
            if arr[mid]>=value:  
            # mid大于并且等于value时(这里等于很关键),在左区间[left,mid]继续寻找
                right=mid    # 注意上面有等于号,所以这里mid不能减一
            else:            # 当mid小于vlue时,在右区间[mid+1,right]中继续寻找
                left=mid+1
        return left+1