[白俊]13334号:鉄道
質問リンク h<=oの条件がないので、始点と終点を統一するために、h<=oの条件を実施する. 到着点を昇順に並べ替えます. 0から(n-1). 開始点をの最小ヒップに入れ、peek値が(現在の到達点-d)値より小さい場合は、すべてポップアップします. 最小臀部の寸法は、(現在の到達点−d)に含まれる鉄道の数を表す.
O(n * logn)
import java.util.*
import kotlin.math.max
fun main() {
val br = System.`in`.bufferedReader()
val bw = System.out.bufferedWriter()
val n = br.readLine().toInt()
val lines = mutableListOf<Pair<Int, Int>>()
for (i in 0 until n) {
var (h, o) = br.readLine().split(" ").map { it.toInt() }
if (h > o) {
val temp = h
h = o
o = temp
}
lines.add(Pair(h, o))
}
lines.sortBy { it.second }
val d = br.readLine().toInt()
var answer = 0
val pq = PriorityQueue<Int>(compareBy { it })
for (i in 0 until n) {
pq.add(lines[i].first)
while (pq.isNotEmpty() && pq.peek() < (lines[i].second - d)) pq.poll()
answer = max(answer, pq.size)
}
bw.write("$answer")
br.close()
bw.close()
}
時間の複雑さ
O(n * logn)
Reference
この問題について([白俊]13334号:鉄道), 我々は、より多くの情報をここで見つけました https://velog.io/@kldaji/백준-13334번-철로テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol