线性探测
题目描述
有一个由 N=220 项组成的数列 A=(A0,A1,…,AN−1)。初始时,所有元素都是 −1。
请按顺序处理 Q 个查询。第 i 个查询(1≤i≤Q)由满足 ti=1 或 ti=2 的整数 ti 以及整数 xi 表示,内容如下:
当 ti=1 时,按顺序执行以下处理。
- 用 h=xi 定义整数 h。
- 当 AhmodN=−1 时,不断将 h 的值加 1。可以证明,在本问题的约束下,该操作在有限次内结束。
- 将 AhmodN 的值改写为 xi。
当 ti=2 时,输出此时 AximodN 的值。
另外,对于整数 a,b,a 除以 b 的余数记作 amodb。
输入格式
输入按以下格式从标准输入给出:
Q
t1 x1
⋮
tQ xQ
输出格式
对每个满足 ti=2 的查询,将答案各输出一行。保证至少存在一个这样的查询。
样例
4
1 1048577
1 1
2 2097153
2 3
1048577
-1
因为 x1modN=1,所以第 1 个查询使 A1=1048577。
在第 2 个查询中,初始 h=x2,此时 AhmodN=A1=−1,所以将 h 的值加 1。此时 AhmodN=A2=−1,因此该查询使 A2=1。
在第 3 个查询中,输出 Ax3modN=A1=1048577。
在第 4 个查询中,输出 Ax4modN=A3=−1。
注意,在本问题中 N=220=1048576 是常数,不会在输入中给出。
数据范围
- 1≤Q≤2×105
- ti∈{1,2}(1≤i≤Q)
- 0≤xi≤1018(1≤i≤Q)
- 至少存在一个 i(1≤i≤Q)使得 ti=2
- 输入均为整数