CF589K Task processing
题目描述
Vasya 想要创建一个计算系统来处理任何任务。为了完成系统,他需要一个算法来选择任务执行的顺序。
他提出了以下算法:
- 只有一个执行队列。要完成任务,需要将其加入队列中。
- 对于每个任务,我们已知完成这项任务所需要耗费的时间 $l_i$ 和将此任务添加进执行队列的时刻 $t_i$。
- 如果在 $T$ 时刻算法必须选择一个任务来执行,它会选择 $l_i-(T-t_i)^2$ 中的最小值来执行。如果有最小值相同的任务,那么算法会选择最先加进来的任务去执行。接下来 $l_i$ 秒,算法将会等待任务完成。
为了测试算法的正确性,Vasya 希望您来模拟这个算法。
你被给予了 $n$ 个任务,对于每个任务,您都知道 $l_i$ 和 $t_i$。
对于每个任务,请找出它将完成的时刻。
输入格式
输入共 $n+1$ 行。
第一行输入一个整数 $n$。
接下来 $n$ 行,第 $i$ 行输入 $l_i$ 和 $t_i$。
输出格式
输出共 $1$ 行,输出 $n$ 个以空格分隔的整数。第 $i$ 个整数代表第 $i$ 个任务的完成时间。
说明/提示
对于 $100\%$ 的数据,保证 $1\le n\le10^5$,$1\le l_i\le10^5$,$0\le t_i\le10^5$。
---
Translated by [残阳如血](/user/726139)。