문제:
만약 당신이 약속의 리스트가 있는데 ( 각 약속 시간들은 시작 시간과 끝나는 시간이있고 각 시간들은 겹쳐있을수도 아닐 수도 있다)

당신은 어떻게 효율적으로 각 약속시간들이 어느 약속시간과 겹쳐있는지 찾을것인가. 각 시간들은 정렬되있지 않은 상태다. 

약속 하나가 매우 길수도 있다는것을 명심하라.


해결:

1. i번째 약속의 시간이 a_i ~ b_i 라고 한다면, 얘네들을 (a_i, i, start) / (b_i, i, end)로 쪼갬
2. 쪼갠 튜플들 (2N 개)을 시간 기준으로 정렬함. 시간이 동일할 경우 end가 start 보다 먼저오게 정렬. (중간의 i는 상관 없음)
3. 앞에서부터 튜플을 하나씩 보면서 현재 진행중인 약속을 저장해놓음 (hashset이나 N개짜리 bool array면 될듯)
3-1. end를 만나면 진행중인 약속에서 제거
3-2. start를 만나면 진행중인 약속들과 겹치니까 이를 적음. 그리고 진행중인 약속에 추가


이러면 정렬에 O(N lg N), 중간 루프에 O(N) 이면 해결될듯