문제 링크
- http://icpc.me/13517
사용 알고리즘
- 모스 알고리즘
시간복잡도
- $O((N+Q) \sqrt N log N)$
풀이
전체 구간에서 k번째 원소를 $O(log N)$에 찾는 세그먼트 트리는 잘 알려져 있습니다.
트리 위에서 모스 알고리즘을 돌리면서, k번째 원소를 찾는 세그먼트 트리를 이용해주면 $O((N+Q) \sqrt N log N)$에 풀 수 있습니다.
TLE가 날 수 있는데, 가중치를 좌표압축해주고 모스 알고리즘 쿼리 처리 순서를 Hilbert Curve(링크)를 이용해 정해주면 TLE를 피할 수 있습니다.
전체 코드
1 |
|