Задача C. Тор с подвижными частицами

Автор:А. Баранов   Ограничение времени:1 сек
Входной файл:input.txt   Ограничение памяти:256 Мб
Выходной файл:output.txt  
Максимальный балл:100  

Условие

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

Известно, что каждая такая частица в течение всей своей жизни совершает непрерывное
прямолинейное движение с некоторой постоянной скоростью.
При столкновении с каким-либо препятствием, она отклоняется от исходной траектории,
а затем продолжает свое движение, как ни в чем не бывало.

В очень редких случаях также могут встречаться абсолютно неподвижные частицы, скорости которых равны нулю.

Будем полагать, что тор задается радиусами направляющей R1 и образующей R2 окружностей.
Его ось вращения совпадает с осью Oz, а центр лежит в начале координат.

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

Рассмотрим поведение указанных частиц на временном интервале от 0 до T.

В процессе своего движения каждая отдельно взятая частица может то и дело сталкиваться с границей тора.
При столкновении с тором частица отражается от вектора нормали в соответствующей точке (см. рисунок).
Модуль ее скорости при этом сохраняется.

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

В качестве ответа выведите координаты положения частиц
в равноотстоящие моменты времени:
tk = k ⋅ Tm, где k = 1, 2, …, m.

Формат входного файла

В первой строке входного файла содержатся радиусы направляющей R1 и образующей R2 окружностей тора.

Во второй строке указано значение T, задающее длину временного интервала, и число его подынтервалов m.

Далее следует натуральное число n и последовательность из 6 × n вещественных чисел,
задающих начальные координаты и скорости каждой из частиц:
Xi, Yi, Zi, Ui, Vi, Wi.

Формат выходного файла

Выходной файл должен содержать координаты положения частиц в моменты времени tk,
расположенные в том же порядке, что и во входном файле.

Все значения должны быть указаны с точностью
до 5-го знака после запятой.

Ограничения

Полагается, что начальное расстояние от каждой частицы до поверхности тора ≥ 10 − 2.

Гарантируется, что для каждой отдельной частицы число столкновений с тором
на заданном интервале не превосходит 20.

10 ≥ (R1 − 1) ≥ R2 ≥ 1, 0 < T ≤ 10, 0 < m ≤ 10,
 − 10 ≤ (Xi, Yi, Zi, Ui, Vi, Wi) ≤ 10,
0 < n ≤ 4000

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

Входной файл (input.txt) Выходной файл (output.txt)
1
5.00000 2.00000
1.00000 4
3
-4.50000  2.00000  0.00000 -3.50000 -4.25000  1.50000
-1.50000  2.00000  2.00000 -0.50000 -3.00000 -4.00000
 1.00000  1.00000  1.00000  3.00000  3.00000  0.80000
-5.37500  0.93750  0.37500
-1.62500  1.25000  1.00000
 1.75000  1.75000  1.20000
-6.25000 -0.12500  0.75000
-1.75000  0.50000  0.00000
 2.50000  2.50000  1.40000
-6.28766 -1.10048  0.66906
-1.87500 -0.25000 -1.00000
 2.66100  2.66100  2.42614
-5.34270 -1.97383  0.05307
-2.00000 -1.00000 -2.00000
 2.79624  2.79624  3.48841

0.123s 0.010s 21