Время

16:46:00
10 Февраля 2012
Пятёрка за неделю 22
Осталось: 2 дня
Конец: 11.02.2012 22:00
Лидер: knightL
Версия для печати

Созвездия

   Вадим увлекается астрономией и даже ходит в астрономический кружок. Недавно на кружке он узнал о созвездиях. Это понятие его очень заинтересовало, поэтому, придя домой вечером, он софотографировал звездное небо с помощью телескопа и стал искать созвездия на получившемся снимке.

   Для того, чтобы выделять созвездия, он придумал простое правило - звезда A находится в одном созвездии со всеми теми звездами, изображения которых на снимке находятся от ее изображения "не слишком далеко". Пусть расстояние от изображения звезды A до ближайшего изображения звезды равно d. Тогда в одно созвездие с A Вадим отнесет все звезды, изображения которых находятся на расстоянии не более k·d, где k - некоторое целое число, выбранное Вадимом заранее.

   Это правило он применяет следующим образом. Звезды A и B находятся, по мнению Вадима, в одном созвездии, если существует такая последовательность звезд A = u1, u2, ..., ul = B, что для любых двух соседних звезд ui и ui+1 в этой последовательности выполняется хотя бы одно условие из двух:

  • расстояние между их изображениями не превосходит  k·md(ui) (как md(X) будем обозначать расстояние от изображения звезды X до ближайшего изображения другой звезды);
  • расстояние между их изображениями не превосходит k·md(ui+1).

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

   Ваша задача состоит в том, чтобы написать программу, которая по информации о координатах изображений звезд на снимке, разобъет их на созвездия по методу Вадима.


Технические условия

   Входные данные

   Первая строка входного файла содержит два целых числа: n - количество звезд на снимке (2n5000) и k (1k10). Каждая из последующих n строк содержит по 2 числа - xi и yi - координаты изображения очередной звезды (|xi|, |yi| ≤ 105). Изображения всех звезд находятся в различных точках.

   Выходные данные

   В выходной файл выведите m - количество созвездий. В последующих m строках выведите описания созвездий. Описания каждого созвездия должно содержать число  ni - количество звезд в очередном созвездии, и ni чисел - номера этих звезд. Звезды нумеруются натуральными числами от 1 до n в том порядке, в котором они перечислены во входном файле.


Информация о задаче

Лимит времени: 3 секунды
Лимит памяти: 64 MB
Баллы за пройденный тест: 3.125
Сложность: 63% 3/8

Пример

Пример входных данных

Sample 1
8 1
0 0
1 1
1 0
0 1
2 2
2 3
3 2
3 3

Sample 2
8 2
0 0
1 1
1 0
0 1
2 2
2 3
3 2
3 3

Пример выходных данных

Sample 1
2
4 1 2 3 4
4 5 6 7 8

Sample 2
1
8 1 2 3 4 5 6 7 8


← Вклад "Антикризисный" Список задач Битоническая подпоследовательность →