문제 링크
- http://icpc.me/14463
문제 출처
- 2017 Feb USACO Gold 3번
사용 알고리즘
- 세그먼트 트리
시간복잡도
- $O(N \log N)$
풀이
$i$번째 소를 처음 본 시간을 $A_i$, 두번째로 본 시간을 $B_i$라고 합시다.
두 소 $i, j$가 만나기 위해서는
- $A_i \leq A_j \leq B_i$
- $A_i \leq B_j \leq B_i$
- $A_j \leq A_i \leq B_j$
- $A_j \leq B_i \leq B_j$
중 하나 이상 만족해야 합니다.
이런 $(i, j)$ 쌍을 찾는 것은 $(A_i, B_i)$ 들을 정렬해준 뒤, 스위핑하는 것으로 간단히 해결할 수 있습니다.
전체 코드
1 |
|