#P17647. [IO 2025 #1] 商人
[IO 2025 #1] 商人
题目描述
在游历法鲁姆时,霍妮特遇到了 位商人。每位商人恰好出售一种独有的商品,第 位商人的商品最初售价为 。
霍妮特想知道,购买一段连续商人出售的商品,总共需要花多少钱。但有一个问题:商人们总是在改变售价。具体来说,会依次发生 个事件,每个事件属于以下三种类型之一:
1 i x:第 位商人把商品售价改为 。2 l r:第 至第 位商人(包含两端)将各自的商品售价取反。3 l r:霍妮特打算拜访第 至第 位商人(包含两端),并想知道购买他们的全部商品所需的总价。
“将售价取反”的过程如下:
- 商人把当前售价写成恰好 位的二进制数(保证 位足以表示所有售价)。
- 如果二进制表示不足 位,就在前面补零。
- 翻转所有二进制位,例如把
01001变为10110。 - 将得到的二进制数转换回十进制。
请帮助霍妮特回答她的所有询问。
输入格式
第一行包含两个整数 和 ,分别表示商人数和售价的二进制位数,满足 、。
第二行包含 个整数 ,表示商品的初始售价,满足 。
第三行包含一个整数 ,表示事件数,满足 。
接下来 行,每行按题目描述中的格式给出一个事件:先给出事件类型,再给出相应参数。参数满足 、。
输出格式
对于每个类型为 的事件,输出一行,包含对应的区间总价。
5 3
1 2 3 4 5
7
1 2 7
3 1 5
3 2 2
2 2 2
3 2 2
2 1 5
3 1 5
20
7
0
22