时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
《脑叶公司》是由月亮计划自研的一款管理游戏。前面忘了后面忘了,总之跟着晦涩难懂的新手教程管理一群大爷的同时,享受重开的乐趣。
(月亮计划修修你那bug吧)
现在主管在镇压一只血量为

的异想体,此时可以调配

个员工,在给出了每个员工的攻击力

和血量

的同时,也告诉了你异想体每一次发出攻击时的攻击力以及他做出的应对,一共

条。
为了方便理解,我们将操作以及状态简化为以下

种:
1:调配一个编号为

的员工加入战斗
2:调配一个编号为

的员工离开战斗
3:异想体对所有正在战斗状态的员工进行一次攻击力为

的伤害
4:治疗编号为

的员工

血量
若被扣除血量小于恢复血量,视为回复到满血。比如,对于一个血量现在为
的员工,主管治疗他
的血量,那么他的血量现在是
,而不是
。
在这里,我们认为任何一个离开战场后又回到战场的员工血量是满的,同时,在一次指令或一次异想体攻击发出
之后,每一个处于战斗状态的且存活的编号为

员工会对异想体造成攻击力为

的伤害。
现在他想问问你——AI安吉拉,若所有员工开始均处于战斗状态,试问能否让异想体的血量归零或者更低,如果能,那么有多少员工活下来了?(只要员工血量高于0就被认为存活)
注意:在任意一条指令执行前如果出现以下两种情况,请忽视接下来的一切指令并按照输出格式输出答案。
1.所有员工已经死亡
2.异想体已经被镇压。
输入描述:
第一行包含三个整数,
,
,
,分别代表员工数量,异想体血量,以及指令数量。
接下来的一行,共有
个用空格分隔开来的正整数
,代表对应编号为
员工的攻击力。
接下来的一行,共有
个用空格分隔开来的正整数
,代表对应编号为
员工的血量。
接下来的
行,每一行包含主管的一个指令或者异想体的一次攻击。
每一行有两个或三个数字,表示一次指令。
1.
代表第一种指令
2.
代表第二种指令
3.
代表第三种指令
4.

代表第四种指令。
数据保证所有与员工有关的指令

不会重复调配已加入战斗
\死亡的员工加入或
调配已退出战斗\死亡的员工退出。
输出描述:
输出包含一行或两行。
第一行为 YES 或 NO,表示在指令完后能否镇压。
注意,在异性被镇压之后,一切指令均无效,请立即停止你的程序并输出答案。
如果答案是 YES,再输出一行,为存活的员工数。
示例3
输入
复制
10 100 10
5 5 1 1 1 1 1 1 1 1
3 3 3 3 3 3 3 3 3 3
3 1
2 1
4 2 2
1 1
3 2
2 2
4 1 5
1 2
3 2
3 5