题目描述:
- 一个工厂有m条流水线,来并行完成n个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业。
 - 现给定流水线个数m,需要完成的作业数n, 每个作业的处理时间分别为t1,t2…tn。请你编程计算处理完所有作业的耗时为多少?
 - 当n>m时,首先处理时间短的m个作业进入流水线,其他的等待,当某个作业完成时,依次从剩余作业中取处理时间最短的进入处理。
 
输入描述:
- 第一行为2个整数(采用空格分隔),分别表示流水线个数m和作业数n
 - 第二行输入n个整数(采用空格分隔),表示每个作业的处理时长t1,t2…tn。
 - 0< m,n<100
 - 0<t1,t2…tn<100
 - 注:保证输入都是合法的。
 
输出描述:
- 输出处理完所有作业的总时长
 
代码:
def main(args: Array[String]): Unit = {
    // 获取输入
    val MN = StdIn.readLine().split(" ").map(_.toInt)
    val m = MN(0)
    val n = MN(1)
    val NTime = StdIn.readLine().split(" ").map(_.toInt).toList.sorted
    println(NTime)
    // 当 n <= m 时
    if (n <= m) {
        println(NTime(NTime.length - 1))
        return
    }
    // 当 n > m 时
    var res = new ListBuffer[Int]
    // 处理第一批
    for (i <- 0 until m) {
        res += NTime(i)
    }
    // 处理剩下批次,一次替换最小值
    for (i <- m until NTime.length) {
        val resTmp = res.sorted
        res(0) = NTime(i) + resTmp(0)
    }
    // 输出结果
    println(res.max)
}
 
❤️ END ❤️










