#J50009. 蛇队列

蛇队列

问题描述

存在一个蛇的队列。初始时队列为空。

给定 QQ 个查询,请按顺序处理。查询有以下三种类型:

  • 类型 1:以 1 l 的形式给出。将一条长度为 ll 的蛇添加到队列末尾。若原队列为空,则添加的蛇的头部坐标为 00;否则,新蛇的头部坐标为原队列最后一条蛇的头部坐标加上其长度。
  • 类型 2:以 2 的形式给出。队列最前端的蛇离开队列(保证此时队列不为空)。设离开的蛇长度为 mm,队列中剩余所有蛇的头部坐标均减少 mm
  • 类型 3:以 3 k 的形式给出。输出队列中从前往后数第 kk 条蛇当前的头部坐标(保证此时队列中至少有 kk 条蛇)。

输入格式

第一行输入一个整数 QQ,表示查询的总次数。

接下来输入 QQ 行,第 ii 行表示第 ii 个查询,格式为以下三种之一:

  • 1 l
  • 2
  • 3 k

输出格式

设类型 33 的查询共有 qq 个,输出共 qq 行。

ii 行输出第 ii 个类型 33 查询对应的答案。

样例输入 1

7
1 5
1 7
3 2
1 3
1 4
2
3 3

样例输出 1

5
10

样例输入 2

3
1 1
2
1 3

样例输出 2


样例输入 3

10
1 15
1 10
1 5
2
1 5
1 10
1 15
2
3 4
3 2

样例输出 3

20
5

说明

样例 1 解释:

  • 第 1 个查询:添加长度为 55 的蛇。队列为空,其头部坐标为 00
  • 第 2 个查询:添加长度为 77 的蛇。头部坐标为 0+5=50 + 5 = 5
  • 第 3 个查询:查询第 22 条蛇的头部坐标。当前坐标序列为 [0,5][0, 5],输出 5
  • 第 4 个查询:添加长度为 33 的蛇。头部坐标为 5+7=125 + 7 = 12
  • 第 5 个查询:添加长度为 44 的蛇。头部坐标为 12+3=1512 + 3 = 15
  • 第 6 个查询:移除最前端的蛇(长度为 55)。剩余蛇的头部坐标整体减少 55,变为 [0,7,10][0, 7, 10]
  • 第 7 个查询:查询第 33 条蛇的头部坐标。当前坐标序列为 [0,7,10][0, 7, 10],输出 10

样例 2 解释:

该样例中不存在类型 3 查询,因此输出为空。

评测数据规模

对于所有评测数据:

  • 1Q3×1051 \leq Q \leq 3 \times 10^5
  • 类型 1 查询中:1l1091 \leq l \leq 10^9
  • 类型 2 查询保证执行时队列非空
  • 类型 3 查询中:设当前队列中有 nn 条蛇,则 1kn1 \leq k \leq n
  • 所有输入均为整数