打牌题
题号:NC313716
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}www.com 牌堆里有 n 张牌,编号为 1, 2, \dots, n。每张牌 i 具有两个属性:花费能量值 a_i 和恢复能量值 b_i
\hspace{15pt}游戏开始时,www.com 初始拥有 x 点能量,且手里仅有一张编号为 1 的牌。
\hspace{15pt}若 www.com 的能量 x' 大于等于手中牌的花费 a_i,则打出该牌;否则,立即结束游戏。打出编号为 i 的牌后按照以下顺序依次发生:
{\hspace{20pt}}_\texttt{1.}\,当前的能量变为 x' - a_i + b_i
{\hspace{20pt}}_\texttt{2.}\,编号为 i 的牌被打出后回到牌堆;
{\hspace{20pt}}_\texttt{3.}\,从牌堆中抽取一张编号为 (i \bmod n) + 1 的牌到手里。
\hspace{15pt}www.com 想要知道最多能打出多少张牌。如果可以打出无限张牌,则输出 \texttt{Infinity}

【名词解释】
\hspace{15pt}\bmod:代表取模运算。例如,5 除以 3 的余数为 2,因此式子 5 \bmod 3 的值为 2

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 10^4\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入两个整数 nx \left(1 \le n \le 2 \times 10^5;\, 0 \le x \le 10^8\right),分别表示牌的数量和初始能量。
\hspace{15pt}第二行输入 n 个整数 a_1, a_2, \dots, a_n \left(0 \le a_i \le 10^8\right),表示每张牌的花费。
\hspace{15pt}第三行输入 n 个整数 b_1, b_2, \dots, b_n \left(0 \le b_i \le 10^8\right),表示每张牌的恢复。

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

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行。若能无限次打出牌,输出 \texttt{Infinity};否则输出一个整数,表示最多能打出的牌数。
示例1

输入

复制
3
2 1
1 4
2 6
3 10
5 10 12
6 11 10
6 88
5 2 10 4 9 3
0 10 3 5 2 5

输出

复制
1
Infinity
64