import heapq as hq


def generate_time_series(trips):
  trips.sort(key=lambda x: (x[0], x[1]))
  series = {}
  minStartTime = []

  for trip in trips:
    if minStartTime and minStartTime[0] <= trip[0]:
      # start time of incoming trip is lesser than the earliest end time ( AKA minimum start time)
      end = hq.heappop(minStartTime)
      series[end] = len(minStartTime)
    # push current trip end time to a heap
    hq.heappush(minStartTime, trip[1])
    series[trip[0]] = len(minStartTime)

  # Ending all the active trips
  while minStartTime:
    end = hq.heappop(minStartTime)
    series[end] = len(minStartTime)
  
  # Print the active trips as a time series
  sorted_series = dict(sorted(series.items()))
  prev_item = None
  for item in sorted_series.items():
    if prev_item is None:
      prev_item = item
    else:
      print(f"({prev_item[0]},{item[0]}) ====> {prev_item[1]} active trip(s)")
      prev_item = item
  return ''

trips = [[2, 3], [4, 6], [7, 10], [0, 5]]
print(generate_time_series(trips))

trips2 = [[1, 9], [3, 10], [2, 6], [7, 8]]
print(generate_time_series(trips2))