CF1028F Make Symmetrical
题目描述
给定一个点集 $A$,初始时为空。共有三种操作:
1. 向 $A$ 中插入一个点 $(x_i, y_i)$。保证此时该点不在 $A$ 中。
2. 从 $A$ 中删除一个点 $(x_i, y_i)$。保证此时该点在 $A$ 中。
3. 给定一个点 $(x_i, y_i)$,计算至少需要向 $A$ 中添加多少个点,才能使 $A$ 关于经过点 $(0, 0)$ 和 $(x_i, y_i)$ 的直线对称。注意,这些点实际上并不会被加入 $A$,即这些询问彼此独立。
输入格式
第一行包含一个整数 $q$($1 \le q \le 2 \times 10^5$),表示操作的数量。
接下来的 $q$ 行,每行包含三个整数 $t_i$、$x_i$ 和 $y_i$($t_i \in \{1, 2, 3\}$,$1 \le x_i, y_i \le 112\,904$),分别表示操作类型和点的坐标。类型 $1$ 表示插入点,类型 $2$ 表示删除点,类型 $3$ 表示询问使 $A$ 关于经过 $(0, 0)$ 和 $(x_i, y_i)$ 的直线对称至少需要添加多少点。
保证类型 $3$ 的操作不超过 $10^5$ 次,类型 $1$ 和 $2$ 的操作总数也不超过 $10^5$。
输出格式
对于每个类型 $3$ 的操作,输出一行一个整数,表示答案。
说明/提示
第一个样例如下图所示。

由 ChatGPT 4.1 翻译