白绝大军
题号:NC301649
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}当下热门游戏都爱干一件事情,那就是欺骗自己和玩家,例如加藤翔子玩的一款“真投入”的四字游戏最近出了一个新活动,活动内容如下:需要全服玩家活跃度达到一定的值才能解锁该档位的奖励,但是这个要求的全服的活跃是非常高的,甚至严重超出了该游戏的下载量,然而游戏比较良心,官方一定要把奖励全部送到玩家手里,当全服玩家并没有在活动结束前完成指定活跃,那么官方就会在快结束的几天发动《白绝大军》“帮助”完成所有的活跃,使得全体玩家都能够得到奖励。
\hspace{15pt}《xxxx》良心手游!不得不说这是“真投入”了。
\hspace{15pt}运营可以投入“白绝大军”机器人来补足全服活跃。每个机器人会完整复制某个真实玩家的活跃量(即选择玩家 i,该机器人贡献值为 a_i)。可以多次复制同一玩家,但每位玩家最多被复制 b_i 次。机器人数等于所有复制次数的总和。
\hspace{15pt}现知道 n 名真实玩家的活跃 a_1,\dots,a_n 与对应的复制上限 b_1,\dots,b_n 以及目标活跃度 t。在尽可能少使用机器人的前提下,使得总活跃(真实玩家之和 + 机器人贡献之和)至少达到 t。若已满足输出 0,若无论如何都无法达到输出 -1

输入描述:

\hspace{15pt}第一行输入两个整数 n, t \left(1 \le n \le 2\times 10^5,\,0 \le t \le 10^{18}\right),表示真实玩家数量、目标活跃度。
\hspace{15pt}第二行输入 n 个整数 a_1,a_2,\dots,a_n \left(0 \le a_i \le 10^{9}\right),表示真实玩家的活跃。
\hspace{15pt}第三行输入 n 个整数 b_1,b_2,\dots,b_n \left(0 \le b_i \le 2\times 10^5\right),表示真实玩家的复制上限。

\hspace{15pt}除此之外,保证单个测试文件的 b 之和不超过 2\times 10^5

输出描述:

\hspace{15pt}如果无法通过复制达到目标,直接输出 -1;否则输出一个整数,表示最少需要的机器人数量。
示例1

输入

复制
5 120
10 5 20 15 8
1 2 3 0 1

输出

复制
4
示例2

输入

复制
4 10
0 0 0 0
1 1 1 1

输出

复制
-1

说明

\hspace{15pt}在这个样例中,由于所有真实玩家的活跃量均为 0,所以无论如何都无法达到目标活跃度 10