#406. 任务安排
任务安排
题目描述
某研究所新研发了一个项目。该项目有 n 个研究任务待分配,任务编号为1~n;共有 k 个研究员参与本项目,研究员编号为 1~k。
出于任务保密的原则,对于任务分配有着一定的要求:
- 每个研究员必须分配任务列表中的一段编号连续的任务,当然,只分配一个任务或者不分配任务也是可以的。
- 同一个任务只能被同一个研究员领取,第 i 个任务一旦分配给了某研究员,其他人员不得参与该任务。
- 为提升分配效率,拟定分配方式为:所有研究员按自己编号从大到小的顺序依次领取任务,每个研究员会尽可能多的领取任务。(可能会形成部分编号较小的研究员领取不到任务的情况)
请编程计算出合理的任务分配方案,使得项目完成时间尽可能的短;项目完成时间的计算方式为:最后一个完成任务的研究员,其完成任务的总时间。
输入格式
输入 2 个整数 n 和 k。
第 2 行有 n 个整数,第 i 个整数 ti 表示编号为 i 的任务耗时。
输出格式
输出若干行,每行 2 个整数,第 i 行代表某个分配到任务的研究员领到任务的起止编号(没有分配到任务的研究员不需要输出)。
请按照分配任务起止编号字典序从小到大的顺序输出。
9 5
282 594 674 344 122 345 621 850 535
1 2
3 4
5 7
8 8
9 9