periods = [(2, 10), (3, 15), (4, 9), (8, 14), (7, 13), (5, 10)]
intersected = None
for first, second in periods:
    if not intersected:
        intersected = set(range(first, second + 1))
else:
    intersected = intersected.intersection(set(range(first, second + 1)))
intersected
Алгоритм нахождения самого загруженного периода?