一个工厂有m条流水线 来并行完成n个独立的作业。该工厂设置了一个调度系统

在安排作业时,总是优先执行处理时间最短的作业

现给定流水线个数m

需要完成的作业数n

每个作业的处理时间分别为 t1,t2...tn

请你编程计算处理完所有作业的耗时为多少

当n>m时 首先处理时间短的m个作业进入流水线

其他的等待

当某个作业完成时,

依次从剩余作业中取处理时间最短的进入处理

输入描述:

第一行为两个整数(采取空格分隔)

分别表示流水线个数m和作业数n

第二行输入n个整数(采取空格分隔)

表示每个作业的处理时长 t1,t2...tn

0<m,n<100

0<t1,t2...tn<100

输出描述

输出处理完所有作业的总时长

案例

输入

3 5

8 4 3 2 10

输出

13

说明

先安排时间为2,3,4的三个作业

第一条流水线先完成作业

调度剩余时间最短的作业8

第二条流水线完成作业

调度剩余时间最短的作业10

总共耗时 就是二条流水线完成作业时间13(3+10)

let N = 3
let arr = [1, 1, 1, 2, 3, 4, 6, 7, 8]
function test(){
    arr = arr.sort((a,b)=>a-b)
    let lineArr = arr.splice(0,N)
    let time = 0
    while (arr.length>0){
        let min = Math.min(...lineArr)
        time+=min
        lineArr = lineArr.map(i => i - min)
        for(let i =0;i<lineArr.length;i++){
            if(lineArr[i]<=0){
                let item = arr.shift()
                lineArr[i] = item
                if(arr.length===0){
                    time+=item
                }
            }
        }
    }
    console.log(time);
}
test()