#CCSP2024A. I/O 任务调度队列
I/O 任务调度队列
我们在原题的基础上添加了额外声明,试图消除原题在理解上的歧义。但是赛时具体的额外描述遗失,我们只能尽量做到还原题意。
时间限制: 1.0 秒
空间限制: 512 MB
题目描述
现在,你的计算机系统里面有一个存储设备,该存储设备能够通过两个独立的通道对文件进行读写。
通道对于应用发起的任务会采用队列的方式来处理,先提交到队列的任务先处理。
如果一个任务被提交到对应的通道上时,前面的任务还没完成,该任务需要等待前面任务完成后才能被处理。
请你设计一个系统,对于到达的任务(包含任务到达时间,以及完成对应任务所需的时间),将其分发到两个队列。
如果中间存在空白(如第一通道中间没任务提交,但是后续有任务提交上来),中间空白的时间算在时延内。
即,通道的时延按照通道上最后一个完成的任务的时间计算。
注意,任务到达时间不等于提交到队列的时间。一个后到达的任务如果先提交到队列,则先进行处理。
请设计系统,使得最终完成所有任务的时延最小,即两个通道完成所有任务时延最大的值最小。在最大的通道时延最小的情况下,保证另一个通道的时延最小。
例如,如果存在一组队列的分发,通道 1 的时延为 50 的情况下,通道2 的时延可以为 20 或 30,则通道 2 应使用 20 的时延的任务提交方式。
以下为本题的额外声明:
- 任务到达时已经按照此时的状态(当前队列完成时间长短)进行了提交(任务总是在到达时向着较小的那个队列进行发射)。
- 不保证任务的到达时间随任务编号递增,且不同任务到达时间可能相同。
- 在处理任务时,不需要按照任务编号顺序完成,而是按照到达时间的先后顺序尽可能快地进行处理。
输入格式
从标准输入读入数据。
输入的第一行包含一个正整数 。
接下来 行,每行包括一个自然数,为任务到达的时间。提交到存储设备队列的任务所需的时间均为 10。注意,任务的到达时间的顺序可能有重叠(同一时间可能到达多个任务),或者乱序(输入中的到达时间不是严格递增的)。
输出格式
输出到标准输出。
输出两个自然数,分别对应两个队列完成最后一个任务的时间,先输出小的时间,再输出大的时间。
3
1
2
4
12 21
样例 1 解释
第 1 和第 3 个任务被提交到第一个队列。任务 1 在时刻 1 到达,时刻 11 完成;任务 3 在时刻 4 到达,最终的完成时间为 21。第 2 个任务被提交到第二个队列:第 2 个任务在时刻 2 到达,时刻 12 完成。
最终的结果是 12 和 21。
子任务
本题包含 10 个测试用例, 不大于,且所有到达时间不超过 ,保证答案最大不超过 。