T293037 [传智杯 #5 练习赛] 白色旅人

题目描述

有一个物品队列 $\frak B$,初始时为空。现在共有三种操作。每个操作会给定三个整数 $\mathrm{op},x,y$,其中 $\mathrm{op}$ 表示操作种类,$x,y$ 是操作的参数。操作分为如下三种: - $1$:向 $\frak B$ 尾部添加一个物品,它的体积为 $x$,价值为 $y$。 - $2$:把 $\frak B$ 尾部最后物品移除。保证此时最少有一个物品。 - $3$:有一个体积为 $x$ 的背包。用 $\frak B$ 内的物品填充它,每个物品最多用一次,询问最多能获得多大的价值。提示:当 $\frak B$ 为空时,相当于没有物品可用,答案就是 $0$。 对于操作 $2$ 和 $3$,请忽略多余的参数。 **本题强制在线**。强制在线的方式请见输入格式。

输入格式

- 第一行有两个正整数 $n,m_{\max}$,表示操作个数以及操作 $3$ 提到的背包的体积的最大值。 - 接下来 $n$ 行,每行给定三个整数 $\mathrm{op},x',y'$。将 $x',y'$ 分别异或上 $\mathrm{lastans}$ 得到该次询问真正的 $x,y$。其中,$\mathrm{lastans}$ 是上一次操作 $3$ 询问的结果。在第一次操作 $3$ 前,$\mathrm{lastans}=0$。

输出格式

- 输出有若干行,表示每次 $3$ 操作的结果。

说明/提示

### 样例解释 解码后的输入数据为: ```plain 10 10 1 3 4 1 5 5 3 4 1 3 8 1 1 7 10 3 8 1 2 1 1 3 8 1 2 1 1 3 5 1 ``` 对于十次操作,物品序列的情况如下; - 加入体积为 $3$,价值为 $4$ 的物品。物品序列为 $\{(3,4)\}$。 - 加入体积为 $5$,价值为 $5$ 的物品。物品序列为 $\{(3,4),(5,5)\}$。 - 查询体积为 $4$ 的背包能装下的物品价值最大值。此时只能装第一个物品,于是答案为 $4$。 - 查询体积为 $8$ 的背包能装下的物品价值最大值。此时可把两个物品都装下,答案为 $9$。 - 加入体积为 $7$,价值为 $10$ 的物品。物品序列为 $\{(3,4),(5,5),(7,10)\}$。 - 查询体积为 $8$ 的背包能装下的物品价值最大值。此时直接装第三个物品获得的价值大于装下另外两个,于是答案为 $10$。 - 删除最后一个物品。此时物品序列为 $\{(3,4),(5,5)\}$。 - 查询体积为 $8$ 的背包能装下的物品价值最大值。此时可把两个物品都装下,答案为 $9$。 - 删除最后一个物品。此时物品序列为 $\{(3,4)\}$。 - 查询体积为 $5$ 的背包能装下的物品价值最大值。此时只有一个物品可装,答案为 $4$。 ### 数据范围及约定 对于全部数据,$1\le n\le 3\times 10^4$,$1\le m_{\max}\le 2\times 10^4$,$1\le x, y\le 2\times 10^4$。