M. Яблоко от яблони
На яблоне висят яблок — шаров. Яблоко задано координатами своей самой верхней точки и радиусом ; значит, центр шара находится в . Ось направлена вверх. Изначально никакие два яблока не пересекаются и не соприкасаются.
Первое яблоко отрывается и падает строго вниз. Задев по дороге другое яблоко, оно срывает и его, и то тоже начинает падать. Определите, какие яблоки упадут.
Графа во входных данных нет — его надо построить. Вершины — яблоки, ребро означает «падающее заденет ». Ответ — множество вершин, достижимых из первой.
Всё содержание задачи в том, когда падающее задевает . Пусть центры шаров — и . Тогда заденет ровно если
Первое условие — что шар попадает в вертикальный цилиндр, который заметает падающий . Второе — что ниже: падая, уходит вниз, и до того, что выше, ему не дотянуться.
Сравнение только целочисленное — извлекать корни не нужно и вредно.
Формат ввода
Первая строка содержит число ().
Далее идут строк по четыре целых числа , , , (, ).
Формат вывода
В первой строке — количество упавших яблок.
Во второй — их номера по возрастанию.
Примеры
4 0 0 10 4 5 0 3 1 -7 4 7 1 0 1 2 6
3 1 2 4
2 0 0 0 1 0 0 100 1
1 1