SJY摆棋子
SJY 在一个棋盘上摆放棋子。棋盘上初始有 个黑色棋子,之后进行 次操作。每次操作会在棋盘上放置一个黑色棋子或白色棋子。
放置白色棋子时,需要找出当前棋盘上距离它最近的黑色棋子。两个坐标分别为 和 的棋子之间的曼哈顿距离为:
对于每个被放置的白色棋子,请输出它与当前所有黑色棋子之间的最小曼哈顿距离。同一个格子内可以放置多个棋子。
输入格式
第一行包含两个整数 、,分别表示初始黑色棋子的数量和操作数量。
接下来 行,每行包含两个整数 、,表示一个初始黑色棋子的坐标。
接下来 行,每行包含三个整数 、、:
- 若 ,则在坐标 处放置一个黑色棋子;
- 若 ,则在坐标 处放置一个白色棋子,并查询它到当前所有黑色棋子的最小曼哈顿距离。
输出格式
对于每个满足 的操作,输出一行一个整数,表示对应白色棋子到当前所有黑色棋子的最小曼哈顿距离。
样例输入
2 3
1 1
2 3
2 1 2
1 3 3
2 4 2
样例输出
1
2
数据范围
- ;
- 对于所有初始棋子和操作,均有 ;
- 由于 且黑色棋子只增加、不删除,因此每次执行 的操作时,棋盘上都至少存在一个黑色棋子;
- 本题可以使用 KD 树通过。
来源与许可
本题题面与测试数据整理自 BZOJ。
样例 1
输入
2 3
1 1
2 3
2 1 2
1 3 3
2 4 2
输出
1
2