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