#5110. Distance Component Size Query

0

Distance Component Size Query

Distance Component Size Query

题目描述

你被给定一个整数 KK。对于一个最初为空的集合 SS,按顺序处理 QQ 个以下两类查询:

1x1 x:给定一个整数 xx。如果 xx 在 SS 中,则从 SS 中移除 xx。否则,将 xx 加入 SS。 2x2 x:给定一个在 SS 中的整数 xx。考虑一个图,顶点是 SS 中的数,当且仅当两数的绝对差不超过 KK 时在它们之间存在一条边。打印包含 xx 的连通分量中的顶点个数。

输入格式

输入从标准输入按如下格式给出: QQ KK query1\mathrm{query}_1 ⋮\vdots queryQ\mathrm{query}_Q

每个查询按如下格式给出: 11 xx

22 xx

输出格式

处理这些查询。

7 5
1 3
1 10
2 3
1 7
2 3
1 10
2 3
1
3
2
11 1000000000000000000
1 1
1 100
1 10000
1 1000000
1 100000000
1 10000000000
1 1000000000000
1 100000000000000
1 10000000000000000
1 1000000000000000000
2 1
10
8 0
1 1
1 2
2 1
1 1
1 2
1 1
1 2
2 1
1
1

提示

1≤Q≤2×1051 \leq Q \leq 2\times 10^5 0≤K≤10180 \leq K \leq 10^{18} 对于每个查询,1≤x≤10181 \leq x \leq 10^{18}。 对于每个第二类查询,所给的 xx 在该时刻位于 SS 中。 所有输入值均为整数。查询处理过程如下:

在第一条查询中,将 33 加入 SS,得到 S={3}S=\{3\}。 在第二条查询中,将 1010 加入 SS,得到 S={3,10}S=\{3,10\}。 在第三条查询中,考虑顶点为 33 和 1010 且没有边的图。包含 33 的连通分量大小为 11,因此输出 11。 在第四条查询中,将 77 加入 SS,得到 S={3,7,10}S=\{3,7,10\}。 在第五条查询中,考虑顶点为 3,7,103,7,10 的图,边为 33 与 77 之间、以及 77 与 1010 之间。包含 33 的连通分量大小为 33,因此输出 33。 在第六条查询中,将 1010 从 SS 中移除,得到 S={3,7}S=\{3,7\}。 在第七条查询中,考虑顶点为 33 和 77 的图,二者之间有一条边。包含 33 的连通分量大小为 22,因此输出 22。

标签: AtCoder|abc356F

来源

AtCoder|abc356F