#CF3733. 还原任务的持续期
还原任务的持续期
题目描述
最近,光头强完成了 个连续的任务。
对于每个任务,已知它被给到光头强的时间为 , 互不相同。我们还知道任务的完成时间 。对于每个任务,存在一个未知值 - 任务执行的持续时间。
已知任务是按照它们的顺序完成的。光头强按照以下方式执行任务:
一旦第一个任务出现,光头强立即开始执行它。 如果在光头强完成上一个任务之前出现了新任务,则将新任务放在队列的末尾。 当光头强完成当前任务且队列不为空时,他立即从队列头部取出新任务(如果队列为空-他只是等待下一个任务)。
找到每个任务的 (持续时间)。
输入格式
第一行包含一个整数 ,表示测试用例的数量。
接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 。
每个测试用例的第二行包含 个整数 。
每个测试用例的第三行包含 个整数 。
保证所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,输出 个正整数 ,表示每个任务的持续时间。
测试样例
4
3
0 3 7
2 10 11
2
10 15
11 16
9
12 16 90 195 1456 1569 3001 5237 19275
13 199 200 260 9100 10000 10914 91066 5735533
1
0
1000000000
2 7 1
1 1
1 183 1 60 7644 900 914 80152 5644467
1000000000
样例说明
第一个测试用例:
一开始队列为空:。第一个任务就是在这里开始的。在时间 ,光头强完成了第一个任务,所以第一个任务的持续时间是 。队列为空,所以光头强正在等待。
在时间 ,第二个任务到达。在时间 ,第三个任务到达,现在队列看起来像这样:。
在时间 ,光头强完成了第二个任务,因此第二个任务的持续时间为 。此时,队列中没有任务,所以光头强正在等待。
在时间 ,光头强立即开始执行第三个任务,并在时间 完成。因此,第三个任务的持续时间为 。
第一个测试用例的例子。