CF19D Points

题目描述

Pete 和 Bob 发明了一个有趣的新游戏。Bob 拿出一张纸,并在上面建立一个直角坐标系:点 $(0,0)$ 位于纸张的左下角,$O_x$ 轴向右,$O_y$ 轴向上。Pete 会给 Bob 三种类型的请求: - `add x y` —— Bob 在纸上标记一个坐标为 $(x,y)$ 的点。对于每个此类型的请求,保证在该请求时 $(x,y)$ 还没有被标记。 - `remove x y` —— Bob 擦除之前已经标记的坐标为 $(x,y)$ 的点。对于每个此类型的请求,保证在该请求时 $(x,y)$ 已经被标记。 - `find x y` —— Bob 在纸上找到所有位于点 $(x,y)$ 右上方,即横坐标严格大于 $x$ 且纵坐标严格大于 $y$ 的所有已标记点。在这些点中,Bob 选择横坐标最小的那个;如果有多个横坐标最小的点,则选择其中纵坐标最小的那个,并将其坐标告诉 Pete。 当请求数是 $10$、$100$ 或 $1000$ 时,Bob 还能应付,但当请求数增长到 $2 \times 10^5$ 时,Bob 就力不从心了。现在他需要一个程序来帮助他回答所有 Pete 的请求。请你帮助 Bob 完成这个任务!

输入格式

输入的第一行包含一个整数 $n(1 \leq n \leq 2 \times 10^5)$,表示请求的数量。接下来的 $n$ 行,每行描述一个请求。`add x y` 表示添加一个点,`remove x y` 表示删除一个点,`find x y` 表示查询当前所有被标记的点中严格位于 $(x,y)$ 右上方的点中,横坐标最小(若有多个取纵坐标最小)的点的坐标。 所有给定的坐标都是非负数,且不超过 $10^9$。

输出格式

对于每个 `find x y` 类型的请求,输出一行答案——即满足条件的点的坐标。如果不存在这样的点,输出 `-1`。

说明/提示

由 ChatGPT 5 翻译