#C07L10P13. C07.L10.STL之队列.附加题3.排队

C07.L10.STL之队列.附加题3.排队

题目描述

某银行只有一个 ATM 处理机,有 N 个人陆续来使用ATM机,编号按照到达的时间次序为 1,2,3...,N 。

已知每个人有到达时间 did_i 和需要处理的时间 tit_i。如果前面有人还没有操作完,就要排队,但如果排队的人已经有 5 个,刚到达的人就会转到其他地方去。(如果第 1 个人刚好操作完成,刚到达的人是一定可以排队的)

输入数据中有一些数据的 tit_i 是 -1 ,这表示来的人不是来排队的,是有特别任务:他询问排队的最后一个人的编号。如果排队的队伍为空,输出 -1。

请编程输出这些询问出的编号。

输入格式

  1. 第 1 行 1 个正整数:N,范围在[1,1000]。

  2. 第 2 到 N+1 行:

    • 每行2个整数 did_itit_idid_i 范围在[1,10000],tit_i 范围在[-1,100]。保证 did_i 是递增的。

输出格式

一行,一些整数。

样例

10
2 9
3 10
5 3
6 -1
7 4
9 10
10 5
11 3
200 1
201 -1
3 -1

样例解释

  1. 第 2 个时间点,第 1 个人来到 ATM 机上处理;他将在第 11 个时间处理完离开;

  2. 第 3 个时间点,第 2 个人到达;他将在第 21 个时间处理完离开;

  3. 第 5 个时间点,第 3 个人到达;他将在第 24 个时间处理完离开;

  4. 第 6 个时间点,第 4 个人到达;询问队伍里的最后一个人编号是 3 ;

  5. 第 7 个时间点,第 5 个人到达;他将在第 28 个时间处理完离开;

  6. 第 9 个时间点,第 6 个人到达;他将在第 38 个时间处理完离开;

  7. 第 10 个时间点,第 7 个人到达;由于队伍里有 5 个人了,他离开这个银行;

  8. 第 11 个时间点,第 8 个人到达;由于第 1 个人处理完了,队伍人 4 个,他可以排队,他将在第 41 个时间处理完离开;

  9. 第 200 个时间点,第 9 个人到达;他将在第 201 个时间处理完离开;

  10. 第 201 个时间点,第 10 个人到达;队伍为空,输出 -1 。