题目描述
译自 ROI Regional 2023 Day1 T4. Разноцветные точки
我们来看平面上的n个点,编号从1到n,记为P1,P2,…,Pn,第i个点的坐标为(xi,yi)。
考虑以下过程。选择一个起始点i和一个紧随其后的点j(i=j),以及一个整数t。然后按以下算法计算目标点k的编号。考虑从点Pi指向点Pj的向量PiPj。将所有点(除了j)按逆时针方向从向量PiPj的方向排序。如果角度相同,则按到点j的距离排序。目标点k是排序后第t个点。然后点j成为起始点,点k成为紧随其后的点,重复上述算法计算新的目标点。这个过程无限重复。
为了更好地理解这个过程,我们来看一个例子。假设有6个点,如图1所示,t=4。假设起始点编号为1,紧随其后的点编号为2。从点P2出发,绘制向量P1P2,并按逆时针方向排序所有点(除了P2)。在图2中,虚线表示向量P1P2,为了方便,还绘制了从点P2到其他所有点的向量。

图1:6个点的例子

图2:向量P1P2以及从点P2到其他所有点的向量
点将按以下顺序排序:P3,P5,P1,P6,P4。因此,目标点编号为6。然后点2成为起始点,点6成为紧随其后的点。
在图3中,展示了起始点为2,紧随其后的点为6的过程。点将按以下顺序排序:P4,P3,P2,P1,P5。注意,点P1在这个列表中排在P5之前,因为点P1到点P6的距离小于点P5到点P6的距离。目标点编号为1。
在图4中,展示了起始点为6,紧随其后的点为1的过程。注意,在这种情况下,从点P1出发的向量P6P1与从点P1出发的向量P1P5重合。这些向量用实线表示。点将按以下顺序排序:P5,P6,P4,P2,P3。目标点编号为2。因此,接下来过程将从起始点1和紧随其后的点2开始,并进入循环。

图3:起始点为2,紧随其后的点为6的过程

图4:起始点为6,紧随其后的点为1的过程
我们将每个点涂成三种颜色之一。第i个点的颜色定义如下:
- 如果存在一个点j,选择点i作为起始点,点j作为紧随其后的点,在上述过程中点i将无限次成为起始点,则点i被涂成绿色(G)。
- 如果点i未被涂成绿色,并且存在一个点j,选择点i作为起始点,点j作为紧随其后的点,在上述过程中点i至少再成为一次起始点,则点i被涂成蓝色(B)。
- 如果点i既未被涂成绿色,也未被涂成蓝色,则点i被涂成红色(R)。
确定每个点的颜色。
输入格式
第一行包含两个整数n和t(2≤n≤1000,1≤t≤n−1)。
接下来的n行中,每行包含两个整数xi和yi(−109≤xi,yi≤109)。保证没有两个点重合。
输出格式
输出一个由n个字符组成的字符串:第i个字符表示第i个点的颜色。绿色点用字母G表示,蓝色点用字母B表示,红色点用字母R表示。
样例1
输入
64
−1−1
1−2
4−2
2−4
23
−4−5
输出
GGBBRG
我们来看第一个样例中的一些点。
点P1被涂成绿色,因为可以选择点P2作为紧随其后的点,过程将无限次访问点P1。这个例子在题目中已经解释过。
可以证明,点P3不是绿色的,但它是蓝色的,因为可以选择点1作为紧随其后的点,点3将至少再成为一次起始点。起始点为1,紧随其后的点为3的过程在图5、6和7中展示。
对于起始点3和紧随其后的点1,点将按以下顺序排序:P6,P4,P2,P3,P5。点3成为目标点。然后对于起始点1和紧随其后的点3,点将按以下顺序排序:P5,P1,P2,P6,P4。点6成为目标点。最后,对于起始点3和紧随其后的点6,点将按以下顺序排序:P4,P3,P2,P1,P5。点1成为目标点。然后过程继续,起始点为6,紧随其后的点为1。从题目中的例子我们知道,过程将进入循环,访问点6、1和2。

图5:起始点为3,紧随其后的点为1的过程

图6:起始点为1,紧随其后的点为3的过程

图7:起始点为3,紧随其后的点为6的过程
样例2
输入
21
11
22
输出
GG
在第二个样例中,可以很容易地证明,如果一个点是起始点,另一个点是紧随其后的点,那么目标点将是原来的起始点。因此,这两个点都将被涂成绿色。
数据范围与提示
详细子任务附加限制及分值如下表所示。
| 子任务 |
分值 |
附加限制 |
子任务依赖 |
| 1 |
10 |
n≤10,所有点在一条直线上 |
|
| 2 |
15 |
所有点在一条直线上 |
1 |
| 3 |
10 |
n≤10,保证没有蓝色点 |
|
| 4 |
n≤10 |
1,3 |
| 5 |
15 |
n≤100,保证没有蓝色点 |
3 |
| 6 |
n≤100 |
1,3,4,5 |
| 7 |
5 |
n≥3,所有点是严格凸多边形的顶点,按逆时针顺序给出 |
|
| 8 |
20 |
无附加限制 |
1∼7 |