AT_abc228_d [ABC228D] Linear Probing
题目描述
有一个长度为 N=220 的数列 A=(A0,A1,…,AN−1)。初始时,所有元素均为 −1。
请依次处理 Q 个查询。第 i 个查询由整数 ti(ti=1 或 ti=2)和整数 xi 给出,具体内容如下:
- 当 ti=1 时,依次进行以下操作:
- 令整数 h=xi。
- 当 AhmodN=−1 时,不断将 h 的值加 1。在本题的约束下,可以证明此操作会在有限次内结束。
- 用 xi 替换 AhmodN 的值。
- 当 ti=2 时,输出当前 AximodN 的值。
其中,对于整数 a,b,amodb 表示 a 除以 b 的余数。
输入格式
输入按以下格式从标准输入给出。
Q
t1 x1
⋮
tQ xQ
输出格式
对于每个 ti=2 的查询,依次输出答案,每个答案占一行。保证至少存在一个 ti=2 的查询。
输入输出样例 #1
输入 #1
4
1 1048577
1 1
2 2097153
2 3
输出 #1
1048577
-1
说明/提示
限制条件
- 1≤Q≤2×105
- ti∈{1,2}(1≤i≤Q)
- 0≤xi≤1018(1≤i≤Q)
- 至少存在一个 ti=2 的查询。
- 输入均为整数。
样例解释 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 是常数,输入中不会给出。
由 ChatGPT 4.1 翻译