python题目58:工厂流水线调度
一个工厂有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) 3 9 1 1 1 2 3 4 6 7 8
m , n = map(int , input().split())
jobs = list(map(int , input().split()))
if n <= m:
print(max(jobs))
else:
jobs.sort()
sum_time = 0
current_jobs = jobs[0:m]
completed = 0
while completed < n - m:
min_value = current_jobs[0]
sum_time += min_value
current_jobs = [x - min_value for x in current_jobs]
del current_jobs[0]
current_jobs.append(jobs[m + completed])
completed += 1
sum_time += current_jobs[-1]
print(sum_time)