#CF19D. Points

Points

题目描述

Pete 和 Bob 发明了一个有趣的新游戏。Bob 拿出一张纸,并在上面建立一个直角坐标系:点 (0,0)(0,0) 位于纸张的左下角,OxO_x 轴向右,OyO_y 轴向上。Pete 会给 Bob 三种类型的请求:

  • add x y —— Bob 在纸上标记一个坐标为 (x,y)(x,y) 的点。对于每个此类型的请求,保证在该请求时 (x,y)(x,y) 还没有被标记。
  • remove x y —— Bob 擦除之前已经标记的坐标为 (x,y)(x,y) 的点。对于每个此类型的请求,保证在该请求时 (x,y)(x,y) 已经被标记。
  • find x y —— Bob 在纸上找到所有位于点 (x,y)(x,y) 右上方,即横坐标严格大于 xx 且纵坐标严格大于 yy 的所有已标记点。在这些点中,Bob 选择横坐标最小的那个;如果有多个横坐标最小的点,则选择其中纵坐标最小的那个,并将其坐标告诉 Pete。

当请求数是 101010010010001000 时,Bob 还能应付,但当请求数增长到 2×1052 \times 10^5 时,Bob 就力不从心了。现在他需要一个程序来帮助他回答所有 Pete 的请求。请你帮助 Bob 完成这个任务!

输入格式

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

所有给定的坐标都是非负数,且不超过 10910^9

输出格式

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

输入输出样例 #1

输入 #1

7
add 1 1
add 3 4
find 0 0
remove 1 1
find 0 0
add 1 1
find 0 0

输出 #1

1 1
3 4
1 1

输入输出样例 #2

输入 #2

13
add 5 5
add 5 6
add 5 7
add 6 5
add 6 6
add 6 7
add 7 5
add 7 6
add 7 7
find 6 6
remove 7 7
find 6 6
find 4 4

输出 #2

7 7
-1
5 5

说明/提示

由 ChatGPT 5 翻译