hzCPPOJ

蜗牛

时间限制:  2 s      内存限制:   512 MB
提交:17     正确:3     分值:99

题目描述

蜗牛们正在爬树。树的高度为 \( h \) 米,蜗牛从位置 \( 0 \) 开始爬。

每只蜗牛有两个属性 \( a \) 和 \( b \)(\( a > b \))。从第 \( 1 \) 天开始,蜗牛每天白天会向上爬 \( a \) 米;晚上蜗牛休息,会滑下 \( b \) 米。如果在第 \( n \) 天,蜗牛第一次到达位置 \( h \)(即树顶),它将完成爬树,我们说这只蜗牛花费了 \( n \) 天爬树。注意,在最后一天,蜗牛不一定需要爬 \( a \) 米,因为如果它离树顶的距离小于 \( a \),它只需要爬到树顶即可。

不幸的是,你一开始并不知道树的确切高度 \( h \),但你知道 \( h \) 是一个正整数。接下来会有 \( q \) 个事件,分为两种类型:

类型 \( 1 \) 的事件:一只属性为 \( a \)、\( b \) 的蜗牛到来,并声称它花费了 \( n \) 天爬树。如果这条信息与之前已采纳的信息矛盾(即不存在一棵树使得所有已采纳的声明和这条声明都为真),则忽略它。否则,采纳这条信息。

类型 \( 2 \) 的事件:一只属性为 \( a \)、\( b \) 的蜗牛到来,询问你如果它爬树,会花费多少天。你只能根据目前已采纳的信息给出答案。如果你无法精确确定答案(即根据现有的信息,答案不是唯一的),请报告无法确定。

你需要按顺序处理所有事件。

输入

每个测试包含多个测试用例。第一行包含一个整数 \( t \) (\( 1 \le t \le 10^4 \))—— 测试用例的数量。接下来是它们的描述。

每个测试用例的第一行包含一个整数 \( q \) (\( 1 \le q \le 2 \cdot 10^5 \))—— 事件的数量。

接下来的 \( q \) 行中,每一行的第一个整数是 \( 1 \) 或 \( 2 \),表示事件的类型。

如果事件类型是 \( 1 \),则接下来有三个整数 \( a \)、\( b \) 和 \( n \) (\( 1 \le a, b, n \le 10^9 \),\( a > b \))。

如果事件类型是 \( 2 \),则接下来有两个整数 \( a \) 和 \( b \) (\( 1 \le a, b \le 10^9 \),\( a > b \))。

保证所有测试用例中 \( q \) 的总和不超过 \( 2 \cdot 10^5 \)。

输出

对于每个测试用例,输出一行包含 \( q \) 个整数,每个整数对应一个事件,按顺序输出。具体来说,

对于每个类型为 \( 1 \) 的事件,如果你采纳消息,输出 \( 1 \);如果忽略消息,输出 \( 0 \);

对于每个类型为 \( 2 \) 的事件,输出一个整数,表示蜗牛将花费的天数。如果无法确定,输出 \( -1 \)。

样例

样例输入:
5 3 1 3 2 5 2 4 1 2 3 2 3 1 6 5 1 2 3 1 2 6 2 3 1 4 2 2 1 2 1 3 2 10 2 9 1 7 3 6 1 2 1 8 2 5 1 1 10 9 7 1 8 1 2 1 10 5 8 1 10 7 7 2 7 4 1 9 4 2 9 1 2 1 6 1 8 5 6 1 4 2 7 2 9 1 1 5 1 4 1 5 2 7 1 7 1 9 1 9 1 4 2 10 8
样例输出:
1 2 5 1 -1 1 1 0 1 1 0 -1 0 0 0 1 8 0 1 0 0 1 0 0 0 0 1

提示

对于 \( 30\% \)的数据,满足 \( a \cdot n \le 100 \)

对于 \( 60\% \)的数据,满足 \( a \cdot n \le 10000 \)

对于所有数据,满足\( q , \sum q \le 2 \cdot 10^5 \)

提交人

GGyan