Спираль
Маленький мальчик Данила нарисовал на листе бумаги множество точек. После чего решил соединить их в спираль, закручивающуюся по часовой стрелке. Получилось весьма красиво.
Однако, некоторые точки остались неиспользованными. Данила заинтересовался вопросом, а какое максимальное количество точек из нарисованных можно использовать для построения такой спирали. Но так как он еще маленький, то помочь ему решить эту задачу придется Вам. Итак, на плоскости задано множество, состоящее из N различных точек с координатами (xi, yi), где 1 ≤ i ≤ N. Ваша задача — построить закручивающуюся по часовой стрелке спираль, содержащую максимальное количество точек из данного множества в качестве узлов. При этом каждая соседняя пара узлов спирали соединяется отрезком прямой линии. Спираль не должна иметь точек самопересечения или касания. Кроме того, спираль не должна иметь поворотов против часовой стрелки. Первая строка входных данных содержит одно натуральное число N (2 ≤ N ≤ 1000). Последующие N строк содержат по 2 целых числа xi и yi — координаты соответствующей точки ( –10000 ≤ xi, yi ≤ 10000). Гарантируется, что никакие две точки не совпадают. В первую строку выходных данных выведите одно натуральное число – количество точек, вошедших в спираль. Во второй строке выведите номера точек в порядке их включения в спираль (в порядке обхода), разделенные пробелами. Точки нумеруются с 1 до N в порядке следования во входных данных. При наличии нескольких правильных решений выведите любое. Примеры
| |||||||||||||
|