#aBC356F. [ABC356F] Distance Component Size Query

[ABC356F] Distance Component Size Query

AT_abc356_f [ABC356F] Distance Component Size Query

题目描述

给定一个整数 KK。对于初始为空的集合 SS,依次处理 QQ 个如下两种类型的查询:

  • 1 x:给定整数 xx。如果 SS 中包含 xx,则将 xxSS 中移除;否则,将 xx 加入 SS
  • 2 x:给定 SS 中的一个整数 xx。以 SS 中的数为顶点,若两个数的差的绝对值不超过 KK,则在它们之间连一条边。对于这样的图,输出 xx 所在连通分量的顶点数。

输入格式

输入按以下格式从标准输入给出。

QQ KK
query1\mathrm{query}_1
\vdots
queryQ\mathrm{query}_Q

每个查询的格式如下:

11 xx

22 xx

输出格式

请处理所有查询。

输入输出样例 #1

输入 #1

7 5
1 3
1 10
2 3
1 7
2 3
1 10
2 3

输出 #1

1
3
2

输入输出样例 #2

输入 #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

输出 #2

10

输入输出样例 #3

输入 #3

8 0
1 1
1 2
2 1
1 1
1 2
1 1
1 2
2 1

输出 #3

1
1

说明/提示

限制条件

  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 0K10180 \leq K \leq 10^{18}
  • 对于每个查询,1x10181 \leq x \leq 10^{18}
  • 对于类型 22 的查询,给定的 xx 一定在当前的 SS 中。
  • 输入均为整数。

样例说明 1

查询的处理过程如下:

  • 11 个查询,将 33 加入 SS,此时 S={3}S=\{3\}
  • 22 个查询,将 1010 加入 SS,此时 S={3,10}S=\{3,10\}
  • 33 个查询,考虑 3,103,10 这两个顶点组成的图,没有边,输出 33 所在连通分量的大小 11
  • 44 个查询,将 77 加入 SS,此时 S={3,7,10}S=\{3,7,10\}
  • 55 个查询,考虑 3,7,103,7,10 这三个顶点组成的图,3377 之间有边,771010 之间有边,输出 33 所在连通分量的大小 33
  • 66 个查询,将 1010SS 中移除,S={3,7}S=\{3,7\}
  • 77 个查询,考虑 3,73,7 这两个顶点组成的图,3377 之间有边,输出 33 所在连通分量的大小 22

由 ChatGPT 4.1 翻译