[BOJシルバー2]風船工場15810 Kotlin


質問する



に答える

  • を見ると、プログラマーの中で解いた二分探索問題を思い出し、二分探索で直接解いた.
  • 最短時間0、最長時間->スタッフの中で最長時間*風船数、二分探索を回すと簡単に解けます.
  • コード#コード#

    fun main() = with(System.`in`.bufferedReader()) {
        val (n,m) = readLine().split(" ").map{it.toInt()}
        val list = readLine().split(" ").map{it.toLong()}
        var max : Long = list.maxOrNull()!!*m
        var min : Long= 0
        while(min<=max){
            val mid = (max+min)/2
            var cnt = 0L
            for(t in list){
                cnt += mid/t
            }
            if(cnt<m){
                min = mid+1
            }
            else{
                max = mid-1
            }
        }
        println(min)
    }