Задача 4. Разноцветные точки

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб
Максимальный балл:100  

Условие

Рассмотрим n точек на плоскости, пронумерованных от 1 до n, обозначим их как P1, P2, …, Pn, координаты i-й точки (xi, yi).

Рассмотрим следующий процесс. Выберем номер начальной точки i и номер следующей за ней точки j (i ≠ j), а также целое число t. После этого номер прицельной точки k вычисляется по следующему алгоритму. Рассмотрим вектор overrightarrowPi Pj, направленный из точки Pi в точку Pj. Упорядочим все точки, кроме j-й, по углу, отсчитывая против часовой стрелки от направления вектора, равного overrightarrowPi Pj, отложенного из точки j. При равенстве угла будем упорядочивать точки по возрастанию расстояния до точки j. В качестве точки k выбирается точка, являющаяся t-й в данном порядке при нумерации с единицы. Далее точка j становится начальной, а точка k — следующей за ней, после чего, пользуясь тем же алгоритмом, вычисляется номер прицельной точки. Этот процесс повторяется до бесконечности.

Для лучшего понимания процесса рассмотрим следующий пример. Пусть имеются 6 точек, изображенных на рисунке 1, а t = 4. Пусть номер начальной точки равен 1, а номер следующей за ней точки равен 2. Отложим вектор overrightarrowP1 P2 от точки P2 и отсортируем все точки, кроме точки P2, по углу, отсчитывая против часовой стрелки от направления данного вектора. На рисунке 2 отложенный вектор обозначен пунктирной линией, а также для удобства проведены векторы из точки P2 во все остальные точки.

Рисунок 1: Пример множества из 6 точек
Рисунок 2: Вектор overrightarrowP1 P2, а также векторы из точки 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. Обратите внимание, что в данном случае вектор overrightarrowP6 P1, отложенный из точки P1 совпадает с вектором overrightarrowP1 P5, отложенным из точки P1. Эти векторы изображены сплошной линией. Точки будут упорядочены следующим образом: P5, P6, P4, P2, P3. Прицельная точка будет иметь номер 2. Таким образом, далее процесс начнется для начальной точки 1 и следующей точки 2 и зациклится.

Рисунок 3: Процесс для начальной точки 2 и следующей точки 6
Рисунок 4: Процесс для начальной точки 6 и следующей точки 1

Покрасим каждую из n точек в один из трех цветов. Цвет i-й точки определяется следующим образом:

Для каждой точки определите, в какой цвет ее нужно покрасить.

Формат входных данных

Первая строка содержит два целых числа n и t.

Каждая из следующих n строк содержит два целых числа xi и yi. Гарантируется, что никакие две точки не совпадают.

Формат выходных данных

Выведите строку, состоящую из n символов: i-й символ строки должен обозначать цвет i-й точки. Для зеленой точки выведите букву~«G», для синей точки — букву~«B», а для красной точки — букву~«R».

Ограничения

2 ≤ n ≤ 1 000, 1 ≤ t ≤ n − 1

 − 109 ≤ xi, yi ≤ 109

Система оценки

Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Подзадача Баллы Дополнительные ограничения Необходимые подзадачи Информация о проверке
1 10 n ≤ 10, все точки расположены на одной прямой первая ошибка
2 15 все точки расположены на одной прямой 1 первая ошибка
3 10 n ≤ 10, гарантируется, что нет синих точек первая ошибка
4 10 n ≤ 10 1, 3 первая ошибка
5 15 n ≤ 100, гарантируется, что нет синих точек 3 первая ошибка
6 15 n ≤ 100 1, 3 − 5 первая ошибка
7 5 n ≥ 3, все точки являются вершинами строго выпуклого многоугольника и даны в порядке обхода против часовой стрелки первая ошибка
8 20 нет 1 − 7 первая ошибка

Пояснение к примеру

Рассмотрим некоторые точки из первого примера.

Точка 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

Во втором примере из условия легко показать, что если одна из точек является начальной, а другая — следующей, то прицельной станет точка, которая являлась начальной. Поэтому обе точки будут окрашены в зеленый цвет.

Примеры тестов

Стандартный вход Стандартный выход
1
6 4
-1 -1
1 -2
4 -2
2 -4
2 3
-4 -5
GGBBRG
2
2 1
1 1
2 2
GG

0.200s 0.014s 29