测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A7676. Drop Blocks

编程题 普及-
知识点

题目描述

有 $N$ 个单元格从左到右排成一行。初始时,所有单元格中均未放置任何方块。

给你 $Q$ 个查询,请按顺序处理它们。每个查询为以下两种类型之一:

* 1 x:在从左往右数第 $x$ 个单元格中放置 $1$ 个方块。然后,若每个单元格中都至少有 $1$ 个方块,则从每个单元格中移除 $1$ 个方块。
* 2 y:输出至少含有 $y$ 个方块的单元格数量。

输入格式

输入从标准输入中按以下格式给出:

> $N$ $Q$
> $\mathrm{query}_1$
> $\mathrm{query}_2$
> $\vdots$
> $\mathrm{query}_Q$

每个查询 $\mathrm{query}_i$($1 \leq i \leq Q$)以如下两种格式之一给出:

> $1$ $x$

> $2$ $y$

输出格式

设 $K$ 为第二类查询的数量。输出 $K$ 行。第 $i$ 行($1 \leq i \leq K$)应包含第 $i$ 个第二类查询的答案。

输入输出样例

输入 #1
3 7
1 1
1 3
1 3
2 1
2 2
1 2
2 1
输出 #1
2
1
1

说明/提示

**样例 1 解释:**
$N=3$,初始时从左到右第 $1$、$2$、$3$ 个格子中放置的方块数量分别为 $(0, 0, 0)$。查询按顺序处理如下:

* 在从左数第 $1$ 个格子中放置 $1$ 个方块。此时存在空格子,因此不执行额外操作。第 $1$、$2$、$3$ 个格子中的方块数量变为 $(1, 0, 0)$。
* 在从左数第 $3$ 个格子中放置 $1$ 个方块。第 $1$、$2$、$3$ 个格子中的方块数量变为 $(1, 0, 1)$。
* 在从左数第 $3$ 个格子中放置 $1$ 个方块。第 $1$、$2$、$3$ 个格子中的方块数量变为 $(1, 0, 2)$。
* 至少有 $1$ 个方块的格子是从左数第 $1$ 和第 $3$ 个格子,共 $2$ 个。因此输出 $2$。
* 至少有 $2$ 个方块的格子仅是从左数第 $3$ 个格子,共 $1$ 个。因此输出 $1$。
* 在从左数第 $2$ 个格子中放置 $1$ 个方块。此时每个格子均至少有 $1$ 个方块,因此从每个格子中移除 $1$ 个方块。第 $1$、$2$、$3$ 个格子中的方块数量变为 $(0, 0, 1)$。
* 至少有 $1$ 个方块的格子仅是从左数第 $3$ 个格子,共 $1$ 个。因此输出 $1$。

综上,按顺序输出 $2$、$1$、$1$,每行一个。

### 约束条件

* $1 \leq N \leq 3 \times 10^5$
* $1 \leq Q \leq 3 \times 10^5$
* $1 \leq x \leq N$
* $1 \leq y \leq 3 \times 10^5$
* 所有输入值均为整数。
* 至少存在一个类型为二的查询。
上一题 去做题 下一题