#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 计算成功举办活动需要多少名主持人
# @param n int整型 有n个活动
# @param startEnd int整型二维数组 startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间
# @return int整型
#
class Solution:
    def minmumNumberOfHost(self , n: int, startEnd: List[List[int]]) -> int:
        # write code here
        points = []
        
        for term in startEnd:
            points.append(term[0])
            points.append(term[1])
        points = list(set(points))
        points = sorted(points)
        mark = [0] * len(points)
#         print("points",points)
#         print(points)
        for term in startEnd:
            start_point = term[0]
            end_point = term[1]
            i = self.bfs(points,start_point)
            mark[i] += 1
            i = self.bfs(points,end_point)
            mark[i] -= 1
        res = 0
        current = 0
#         print(mark)
        for i in mark:
            current += i
            res = max(res,current)
        return res
    
    def bfs(self,nums,i):
        start,end = 0,len(nums)-1
        while start<=end:
            mid = int((start+end)/2)
            if nums[mid]==i:
                return mid
            if nums[mid]<i:
                start = mid+1
            else:
                end = mid-1
        return -1