#CCSP2024A. I/O 任务调度队列 · 改

I/O 任务调度队列 · 改

本题是一道原始 std 错误的题目,我们根据正解重新确定了子任务分布以及数据。

时间限制: 1.0 秒

空间限制: 512 MB

题目描述

现在,你的计算机系统里面有一个存储设备,该存储设备能够通过两个独立的通道对文件进行读写。

通道对于应用发起的任务会采用队列的方式来处理,先提交到队列的任务先处理

如果一个任务被提交到对应的通道上时,前面的任务还没完成,该任务需要等待前面任务完成后才能被处理。

请你设计一个系统,对于到达的任务(包含任务到达时间,以及完成对应任务所需的时间),将其分发到两个队列。

如果中间存在空白(如第一通道中间没任务提交,但是后续有任务提交上来),中间空白的时间算在时延内。

即,通道的时延按照通道上最后一个完成的任务的时间计算。

注意,任务到达时间不等于提交到队列的时间。一个后到达的任务如果先提交到队列,则先进行处理。

请设计系统,使得最终完成所有任务的时延最小,即两个通道完成所有任务时延最大的值最小。在最大的通道时延最小的情况下,保证另一个通道的时延最小。

例如,如果存在一组队列的分发,通道 1 的时延为 50 的情况下,通道 2 的时延可以为 20 或 30,则通道 2 应使用 20 的时延的任务提交方式。

输入格式

从标准输入读入数据。

输入的第一行包含一个正整数 nn

接下来 nn 行,每行包括一个自然数,为任务到达的时间。提交到存储设备队列的任务所需的时间均为 10。注意,任务的到达时间的顺序可能有重叠(同一时间可能到达多个任务),或者乱序(输入中的到达时间不是严格递增的)。

输出格式

输出到标准输出。

输出一行两个自然数,分别对应两个队列完成最后一个任务的时间,先输出小的时间,再输出大的时间。

3
1
2
4
12 21

样例 1 解释

第 1 和第 3 个任务被提交到第一个队列。任务 1 在时刻 1 到达,时刻 11 完成;任务 3 在时刻 4 到达,最终的完成时间为 21。第 2 个任务被提交到第二个队列:第 2 个任务在时刻 2 到达,时刻 12 完成。

最终的结果是 12 和 21。

子任务

对于所有数据,保证 n103n\le 10^3,所有任务到达时间不超过 10410^4

本题采用捆绑测试,你只有通过一个子任务中的所有测试点才能得到该子任务的分数。

  • 子任务 1(30 分):n20n\le 20
  • 子任务 2(30 分):n103n\le 10^3,所有任务到达时间间隔不超过 10310^3
  • 子任务 3(40 分):无特殊限制。