[AtCoder] AtCoder Beginner Contest 217 D. Cutting Woods

TaeGN·2024년 11월 18일

AtCoder

목록 보기
48/55

문제풀이

  1. TreeMap을 사용하여 막대를 관리한다. (막대의 시작, 막대의 끝)
  2. 자른 부분을 기준으로 왼쪽, 오른쪽 막대로 분리한다.

주의사항


소요시간

9분


package AtCoder.ProblemList.Difficulty800_1199.CuttingWoods

import java.util.TreeMap

fun main() {
    val (L, Q) = readln().trim().split(" ").map(String::toInt)
    val map = TreeMap<Int, Int>()
    map[0] = L
    val sb = StringBuilder()
    repeat(Q) {
        val (c, x) = readln().trim().split(" ").map(String::toInt)
        val (sx, ex) = map.lowerEntry(x)
        if (c == 1) {
            map[sx] = x
            map[x] = ex
        } else sb.appendLine(ex - sx)
    }
    println(sb)
}

문제링크

https://atcoder.jp/contests/abc217/tasks/abc217_d

0개의 댓글