#abc217d. [abc217_d]Cutting Woods

[abc217_d]Cutting Woods

题目描述

我们有一根长度为 LL 米的长条木材。
对于每个 x=1,2,,L1x = 1, 2, \dots, L - 1,在这根长条的左端到右端的第 xx 米处都有一个叫做 Mark xx 的标记。

给定 QQ 个查询,第 ii 个查询表示为一对数字 (ci,xi)(c_i, x_i)
按照查询的 ii 升序处理查询,具体如下所示。

  • 如果 ci=1c_i = 1:把长条在 Mark xix_i 处切割成两段。
  • 如果 ci=2c_i = 2:选择带有 Mark xix_i 的那段长条,并打印其长度。

对于两种类型的查询 ci=1,2c_i = 1, 2,保证在查询处理时,Mark xix_i 处没有被切割过。

约束条件

  • 1L1091 \leq L \leq 10^9
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • ci=1,2c_i = 1, 2 (1iQ)(1 \leq i \leq Q)
  • 1xiL11 \leq x_i \leq L - 1 (1iQ)(1 \leq i \leq Q)
  • 对于每个 ii (1iQ)(1 \leq i \leq Q),满足以下条件:不存在 jj 使得 1j<i1 \leq j < i 并且 (cj,xj)=(1,xi)(c_j,x_j) = (1, x_i)
  • 输入的所有值都是整数。

输入格式

从标准输入读入数据,输入格式如下:

LL QQ

c1c_1 x1x_1

c2c_2 x2x_2

\vdots

cQc_Q xQx_Q

输出格式

打印行数等于查询数 ci=2c_i = 2 的数量。在第 jj 行中,打印第 jj 个这样的查询的响应。

示例输入1

5 3
2 2
1 3
2 2

示例输出1

5
3

在第一个查询时,没有进行切割,所以带有 Mark 22 的那段长条的长度为 55 米。因此,应该打印 55
在第二个查询时,将长条切割成了一段长为 33 米和一段长为 22 米。
在第三个查询时,带有 Mark 22 的那段长条的长度为 33 米,所以应该打印 33

示例输入2

5 3
1 2
1 4
2 3

示例输出2

2

示例输入3

100 10
1 31
2 41
1 59
2 26
1 53
2 58
1 97
2 93
1 23
2 84

示例输出3

69
31
6
38
38