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$。