#P1208. 2023.04.22-游戏开发-第二题

2023.04.22-游戏开发-第二题

No testdata at current.

题目内容

在雷火的某款大型游戏中有一种具有无人机攻击功能的环形基地,基地呈圆环形,圆环上最初有C台无人机,无人机初始为可派遣状态。 记当前基地的无人机总数为C,玩家可以有两种请求: 1.派遣m台无人机 (1)当m > C时,如果剩余可派遣无人机数量n = C,也就是此时没有无人机被派遣出去,则可将基地进行升级,无人机数量会变成m,并立马可以将所有无人机派遣出去,成功完成本次派遣,否则派遣失败。 (2)当m <= C时,如果剩余可派遣无人机数量n< m,则派遣失败;如果n >=m,则成功派遣m台无人机。 (3)失败的派遣请求会先存储到等待队列的队尾,等待下一次派遣。

2.返回前面某一批次的无人机 (1)收到返回通知时,无人机将返回环形基地,并进入休眠状态。当所有更早被成功派遣出去的无人机都返回基地之后(注意: 更早 是指实际派遣顺序的更早,而不是派遣ID),处于休眠状态的无人机才能重新进入可派遣状态。 (2)返回操作完成后,会重新对等待队列中的请求进行派遣,直到遇到第一个失败的派遣,该失败的派遣请求会继续留在等待队列的头部。 对于按时序给出的一系列派遣和返回请求,给出每次请求结去的无人机的数量。

输入描述

  • 第一行,输入一个整数c (0<C<1048,576)和一个整数N (0000),相互之间由空格隔开。c为基地内初始无人机的数量,n为请求的总次数。
  • 接下来的N行,每行输入两个整数a和b,相互之间由空格隔开。如果>= 0,则代表这是一个派遣请求,且a为派遣请求的id; 如果a =-1,是一个返回请求。对于派遣请求,第二个整数b代表请求派遣的无人机数0);对于返回请求上第二个整数b代表返回的派遣请求的id。
  • 注:不会有无效的返回请求,即返回请求给出时,对应的派遣请求必派遣。

输出描述

n行整数,表示每次请求之后,新派遣出去的无人机数量

样例

样例一

输入

3 5
0 2
1 2
-1 0 
2 4

输出

2
0
2
0
4

样例二

输入

10 9
0 3
1 2
2 4
-1 0
-1 2
3 2
4 3
-1 1
5 5

输出

3
2
4
0
0
2 
0
3
5