时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
你是银狼,在半年多前的一次对决中,你在模拟宇宙和黑塔的对决失败了,76 个游戏账号全被注销。
至今你都有点不甘心,因此这次你作为骇客在骇入黑塔的模拟宇宙 lite 版,模拟宇宙 lite 版由一排房间组成,编号

范围
![[0,n]](https://www.nowcoder.com/equation?tex=%5B0%2Cn%5D)
,你一开始在

号房间,你只能从

号房间走到

号房间。
你有生存值属性,初始生存值为

,生存值不能小于

。
房间分为挑战房间、奖励房间和事件房间。在
挑战房间,你可以选择挑战里面的怪物,挑战怪物会消耗生存值

;在
奖励房间,你可以获得

点生存值。领取奖励和挑战怪物视为通关这个房间。同时,存在
事件房间,这些房间被黑塔设置了安全限制,因此你无法跳过这个房间,必须通关这个房间,
必须消耗

生存值。
由于你是技术高超的骇客,你可以选择
不挑战或不接受奖励而直接走到下一个房间(视为没有通关这个房间)。但是黑塔的安全系统也不是摆设,而且你的目的只是为了捣乱,你不想被发现,所以整个骇入过程你最多只能损失

点生存值。走出

号房间即完成骇入;虽然中途退出很逊,但是你不想再失去 76 个游戏账号,所以即使你没法走到

号房间你还是会直接退出,表示还是黑塔更胜一筹。
问最多通关几个房间?
输入描述:
第一行输入
)
第二行有
个数
表示每个房间需要消耗或奖励的生存值。
第三行有
个数
表示第
房间的种类
。
表示这个房间为挑战房间;
表示这个房间为奖励房间;
表示这个房间为事件房间。
输出描述:
一个整数,表示最多通关房间数量。
示例1
输入
复制
6 6 10
1 1 4 5 1 4
1 2 1 3 1 2
说明
对于样例,
房间 1 选择挑战,生存值 M=5,共消耗生存值 sum=1;
房间 2 选择奖励,生存值 M=6,共消耗生存值 sum=1;
房间 3 不挑战,生存值 M=6,共消耗生存值 sum=1;
房间 4 必须消耗,生存值 M=1,共消耗生存值 sum=6;
房间 5 选择挑战,生存值 M=0,共消耗生存值 sum=7;
房间 6 选择奖励,生存值 M=4,共消耗生存值 sum=7。