T683397 sword
题目描述
镜流面前有 $n$ 个步离人排成一排,第 $i$ 个步离人的编号为 $i$,血量为 $a_i$, 初始时, 镜流没有朔望 (用于发动【寒川映月】)
镜流将使用以下两种技能:
* 【无罅飞光】:对一个步离人造成 $x$ 点伤害;
* 【寒川映月】:对一个步离人和它两边的步离人造成 $y$ 点伤害;
每回合,镜流将采取以下策略行动 :
* 若朔望层数小于 $2$:对最左边的的步离人释放【无罅飞光】,并获得一层朔望;
* 否则,设当前的步离人数为 $m$ 对第 $\left \lceil \frac{m}{2} \right \rceil $个步离人释放【寒川映月】,并清空朔望层数。
请你输出每回合的情况
**注意** :
* 若步离人当前血量为 $b_i$,且在本回合受到的伤害大于 $b_i$,则步离人实际受到的伤害为 $b_i$
* 步离人死亡 (血量为 $0$ ) 后,位置在它后面的步离人会补到它的位置上
* 详见样例解释。
输入格式
第一行三个整数 $n,x,y$。
第二行 $n$ 个整数,第 $i$ 个数表示第 $i$ 个步离人编号为 $i$, 血量为 $a_i$。
输出格式
我们称以下输出为第 $t$ 个回合中第 $i$ 个步离人受到 $j$ 的伤害的受击情况
* `T=t id=k d=j`, 其中, $k$表示第 $i$ 个步离人原本的编号
对于每一回合, 若本回合镜流攻击了第 $i$ 个步离人, 你需要按照以下格式输出
* 若本回合镜流使用 【无罅飞光】 : 输出一行 $i$ 的受击情况
* 否则, 先输出一行表示 $i-1$的受击情况 (如果存在), 随后输出一行表示 $i$ 的受击情况, 随后输出一行表示 $i+1$ 的受击情况 (如果存在)
说明/提示
样例一:
1. 对第一个步离人(编号$1$)造成了 $1$ 点伤害
2. 对第一个步离人(编号$1$)造成了 $1$ 点伤害, 第一个步离人死亡, 其余步离人向前补位
3. 对第二个步离人(编号$3$), 第三个步离人(编号$4$), 第四个步离人(编号$5$) 造成 $3$ 点伤害, 依次输出结果, 由于第二个和第四个步离人血量不足 $3$, 于是输出它们剩余的血量, 随后, 第五个步离人向前补位
4. 对第一个步离人(编号$2$), 造成 $1$ 点伤害, 第二个步离人(编号$6$) 向前补位
5. 对第一个步离人(编号$6$), 造成 $1$ 点伤害
设 $T_{max}$ 表示最大的回合数
| 测试点编号 | $n$ | $T_{max}$ |
|:-:|:-:|:-:|
| $1$, $2$ | $\le 1$ | $\le 10^5$ |
| $3$, $4$ | $\le 20$ | $\le 10^3$ |
| $5$ ~ $10$ | $\le 100$ | $\le 10^5$ |
对于所有的数据, $n\ge 1$, $1\le x,y,a_i \le 10^9$