描述
现有n个任务按顺序进入队列,CPU通过循环调度法逐一处理这些任务,每个任务最多处理q毫秒。如果q毫秒之后任务尚未处理完,那么该任务将被移动至队伍的最末尾,CPU随即开始处理下一个任务。 例如,假设q是100,有如下任务序列: A(150)-B(80)-C(200)-D(200) 首先,A被处理100ms,然后带着剩余的50ms移到队尾。 B(80)-C(200)-D(200)-A(50) B被处理,在180ms时完成,B移出队列。 C(200)-D(200)-A(50) C被处理,剩余100ms移至队尾。 D(200)-A(50)-C(100) 之后同样处理,一直到所有的任务处理完毕。 请编写一个程序,模拟循环调度法。
输入
第一行,两个整数n和q。接下来n行整数,表示每个任务处理需要的时间t。
输出
按照任务完成的先后顺序输出各个任务完成时的结束时间,一行一个整数。
输入样例
5 100 150 80 200 350 20
输出样例
180 400 450 550 800
数据说明
1<=n<=100000 1<=q<=1000 1<=t<=50000