tarjen 最近一直在玩洛克王国,并且想要捕捉一些闪光精灵(shiny spirits)。
为了刷闪光精灵,tarjen 必须首先重复捕捉普通精灵。捕捉普通精灵会累积闪光池(shiny pool)的污染进度。当污染进度达到所需阈值时,一只属于该池的被侵蚀的精灵(corrupted spirit)就会在地图上生成。击败被侵蚀的精灵后,有概率遇到闪光精灵。
然而,地图上同时存在的被侵蚀的精灵数量是有限的。如果生成的太多,旧的被侵蚀的精灵会被新的挤出。
此外,闪光遭遇还有保底机制。每个闪光池都有一个独立的保底计数器。每次击败来自该池的被侵蚀的精灵时,该池的保底计数器就会加一。当一个池的保底计数器达到 80 时,击败来自该池的被侵蚀的精灵将必定触发闪光遭遇。
详细规则如下。
有 $n$ 种普通精灵,$A$ 个家族和 $B$ 个元素。第 $i$ 种普通精灵属于家族 $fa_i$,且具有元素 $el_i$。
有两种类型的闪光池:
- 家族池 $F_x$:第 $x$ 个家族的闪光池。
- 元素池 $E_x$:第 $x$ 个元素的闪光池。
每个闪光池 $P$ 维护四个值:
- $progress_P$:污染进度,初始为 0。
- $pity_P$:保底计数器,初始为 0。
- $need_P$:生成一只被侵蚀的精灵所需的普通捕捉次数(一个给定的常数)。
- $luck_P$:幸运阈值(一个给定的常数)。
地图上最多可以同时存在 $m$ 只被侵蚀的精灵。所有被侵蚀的精灵按生成时间顺序(最旧的在前)排列在一个队列中。如果数量超过 $m$,则从队首移除最旧的被侵蚀的精灵,直到数量最多为 $m$。因地图容量限制而被挤出的被侵蚀的精灵不被视为被击败,且不会影响任何池的保底计数器。
共有 $q$ 次操作,每次操作为以下两种类型之一。
操作 1:普通捕捉
C T x c
tarjen 连续捕捉第 $x$ 种普通精灵 $c$ 次,并将这 $c$ 次捕捉归入某个闪光池。如果 $T = F$,归入家族池 $F_{fa_x}$;如果 $T = E$,归入元素池 $E_{el_x}$。
设归入的池为 $P$。令 $progress_P \mathrel{+}= c$。然后,只要 $progress_P \ge need_P$,就生成一只属于池 $P$ 的被侵蚀的精灵,并令 $progress_P \mathrel{-}= need_P$。
注意,单次捕捉操作可能会生成多只被侵蚀的精灵。
新生成的被侵蚀的精灵按顺序追加到队列的末尾。如果数量超过 $m$,则从队首移除最旧的被侵蚀的精灵。
操作 2:击败被侵蚀的精灵
B k r
tarjen 挑战地图上的第 $k$ 只被侵蚀的精灵(按从旧到新的顺序排序)。
如果地图上的被侵蚀的精灵少于 $k$ 只,输出 MISS 且不发生任何状态改变。
否则,设该被侵蚀的精灵属于池 $P$。将其从地图上移除,并令 $pity_P \mathrel{+}= 1$。
然后进行闪光检测。每个池 $P$ 都有一个幸运阈值 $luck_P$。如果 $r \le luck_P$ 或 $pity_P = 80$,则遇到闪光精灵:输出 SHINY P 并令 $pity_P = 0$。否则,输出 NORMAL P pity_P。
输入格式
第一行包含五个整数 $n, A, B, m, q$ ($1 \le n, A, B, m, q \le 2 \times 10^5$) —— 普通精灵种类的数量、家族的数量、元素的数量、地图上被侵蚀的精灵的最大数量,以及操作的数量。
接下来的 $n$ 行,每行包含两个整数 $fa_i, el_i$ ($1 \le fa_i \le A, 1 \le el_i \le B$)。
下一行包含 $A$ 个整数 $need_{F_1}, \dots, need_{F_A}$ ($1 \le need_{F_i} \le 10^9$)。
下一行包含 $B$ 个整数 $need_{E_1}, \dots, need_{E_B}$ ($1 \le need_{E_i} \le 10^9$)。
下一行包含 $A$ 个整数 $luck_{F_1}, \dots, luck_{F_A}$ ($0 \le luck_{F_i} \le 10^9$)。
下一行包含 $B$ 个整数 $luck_{E_1}, \dots, luck_{E_B}$ ($0 \le luck_{E_i} \le 10^9$)。
接下来的 $q$ 行,每行描述一个操作,格式为 C T x c ($T \in \{F, E\}, 1 \le x \le n, 1 \le c \le 10^{18}$) 或 B k r ($1 \le k \le 10^{18}, 1 \le r \le 10^9$)。
输出格式
对于每个 B操作,输出一行。如果地图上的被侵蚀的精灵少于 $k$ 只,输出 MISS。否则,如果遇到了闪光精灵,输出 SHINY F x 或 SHINY E x;如果没有遇到,输出 NORMAL F x p 或 NORMAL E x p,其中 $x$ 是闪光池的索引,$p$ 是该池当前的保底计数器值。
样例
输入格式 1
5 2 2 5 10 1 2 1 1 2 2 1 1 2 2 2 2 2 3 40 5 4 41 C E 5 9 C E 4 5 B 2 608984673 B 4 918347739 B 4 37535012 C E 5 7 B 1 712704464 C F 4 7 B 3 270899745 B 5 363752455
输出格式 1
NORMAL E 2 1 NORMAL E 1 1 MISS NORMAL E 2 2 NORMAL F 1 1 MISS
输入格式 2
3 2 1 3 8 1 1 1 1 2 1 2 3 2 0 5 10 C F 1 2 C E 2 4 B 2 50 C F 3 6 B 3 3 B 5 1 C F 1 2 B 3 100
输出格式 2
NORMAL E 1 1 SHINY F 2 MISS NORMAL F 1 1
说明
对于样例 2:
设 $F1$ 表示来自池 $F\ 1$ 的被侵蚀的精灵,$E1$ 表示来自池 $E\ 1$ 的被侵蚀的精灵。
在进行前两次捕捉操作后,地图上的被侵蚀的精灵为 $[F1, E1, E1]$。
执行 B 2 50:击败第 2 只精灵($E1$)。由于 $50 > luck_{E_1} = 10$ 且 $pity = 1 \ne 80$,输出 NORMAL E 1 1。
然后捕捉第 3 种精灵并归入家族池,生成 2 只 $F2$。地图容量为 3,因此在挤出后,地图变为 $[E1, F2, F2]$。
执行 B 3 3:击败第 3 只精灵($F2$)。由于 $3 \le luck_{F_2} = 5$,遇到闪光精灵,输出 SHINY F 2。
执行 B 5 1:地图上少于 5 只精灵,输出 MISS。
最后一次击败的是 $F1$,未遇到闪光精灵,输出 NORMAL F 1 1。