Задача A. Точки на n-мерном параллелепипеде

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

Условие

Пусть имеется набор из m точек n-мерного евклидова пространства, заданных своими декартовыми координатами: (x1i, x2i, …, xni), где нижний индекс обозначает номер точки, а верхний — номер координаты.

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

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

В начале входного файла "input.txt" хранятся два натуральных числа: m и n.

Далее следует m строк, содержащих координаты точек исходного множества: (x1i, x2i, …, xni).

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

Выходной файл "output.txt" должен содержать одно из следующих значений:

1 — если такой параллелепипед существует;

0 — в противном случае.

Ограничения

Все входные значения являются целыми десятичными числами.

 − 104 < xki < 104, 0 < n ≤ 10, 0 < m ≤ 5 ⋅ 104

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

Входной файл (input.txt) Выходной файл (output.txt)
1
 6 3
-3056 -5013 -4706
 6423  9875  1023
-3056 -5013  1023
 6423 -5013 -4706
-3056  9875 -4706
 6423 -5013  1023
1
2
 5 2
-3170 -1400
 4950 -1400
-3170  7030
  150  3500
 4950  7030
0

Задача B. Два кольца на плоскости

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

Условие

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

Пусть имеются два кольца, каждое из которых задается координатами своего центра (xi, yi), а также внутренним qi и внешним ri радиусами.

Требуется определить площадь их пересечения.

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

Во входном файле "input.txt" содержится набор вещественных значений, определяющих положение исходных колец: x1, y1, q1, r1, x2, y2, q2, r2.

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

Выходной файл "output.txt" должен содержать площадь их пересечения, указанную с точностью до 5-го знака после запятой.

Ограничения

0 ≤ q1 ≤ r1, 0 ≤ q2 ≤ r2

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

Входной файл (input.txt) Выходной файл (output.txt)
1
-2.16000 -2.45000  1.27000  2.35000
 1.00000  0.19000  3.00000  4.00000
2.24485
2
-3.64000 -2.75000  1.00000  2.95000
 5.00000 -3.19000  2.00000  4.00000
0.00000

Задача C. Треугольник в параллелепипеде

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

Условие

Пусть имеется параллелепипед со сторонами, параллельными осям координат: D = { (x, y, z): xmin ≤ x ≤ xmax, ymin ≤ y ≤ ymax, zmin ≤ z ≤ zmax} и некоторый треугольник T, заданный координатами своих вершин: (x1, y1, z1), (x2, y2, z2), (x3, y3, z3).

Требуется определить площадь той части треугольника T, которая имеет общие точки с параллелепипедом D.

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

В начале входного файла "input.txt" записаны координаты двух наиболее удаленных вершин параллелепипеда: (xmin, ymin, zmin), (xmax, ymax, zmax).

Далее следуют координаты вершин треугольника: (x1, y1, z1), (x2, y2, z2), (x3, y3, z3).

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

Выходной файл "output.txt" должен содержать площадь, указанную с точностью до 5-го знака после запятой.

Ограничения

Полагается, что вершины треугольника не лежат на одной прямой.

xmin ≤ xmax, ymin ≤ ymax, zmin ≤ zmax.

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

Входной файл (input.txt) Выходной файл (output.txt)
1
-1.00000 -1.00000 -1.00000
 1.00000  1.00000  1.00000

-1.25000  0.56000  1.28090
-1.30000 -1.29010 -0.75000
 0.60790 -1.30700  1.30600
0.97386
2
-1.50000 -1.50000  1.00000
 0.50000  0.00000  1.50000

-3.70980  0.67000  3.20000
-4.60000 -1.86010  3.80250
 1.00000 -1.25000  4.10900
0.00000

Задача D. Пересечение двух пластин

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

Условие

Пусть имеются две круглые плоские пластины, произвольным образом расположенные в трехмерном пространстве. Каждая такая пластина однозначно задается ортогональным к ней вектором (Nxi, Nyi, Nzi), своим центром (Cxi, Cyi, Czi) и радиусом Ri.

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

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

В начале входного файла "input.txt" хранится набор вещественных значений, задающих первую пластину:
Nx1, Ny1, Nz1, Cx1, Cy1, Cz1, R1.
Далее следует такой же набор, задающий вторую пластину:
Nx2, Ny2, Nz2, Cx2, Cy2, Cz2, R2.

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

Выходной файл "output.txt" должен содержать:

1 — если заданные пластины пересекаются;

0 — в противном случае.

Ограничения

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

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

Входной файл (input.txt) Выходной файл (output.txt)
1
 0.59914  0.43486 -0.67224
 1.37001 -4.96720 -5.08104
 8.89915

 0.68033 -0.72560 -0.10314
 6.58011  2.42032  2.03280
 7.03841
1
2
 0.31968  0.82015 -0.47448
 0.37001 -8.76004 -5.38004
 8.01551

 0.24587 -0.88474  0.39594
 8.94060  7.42032 -0.33687
 9.03937
0

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

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

Условие

Пусть имеются три частицы, положение которых в момент времени t = 0 задается двумерными координатами: (x1, y1), (x2, y2) и (x3, y3).

Полагается, что в течение всего последующего времени каждая i-я частица, независимо от остальных,
совершает прямолинейное движение с некоторой постоянной скоростью (ui, vi).

Требуется определить наиболее ранний момент времени T ≥ 0, когда они окажутся на одной прямой.

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

Входной файл "input.txt" содержит последовательность целых чисел:
x1, y1, u1, v1, x2, y2, u2, v2, x3, y3, u3, v3.

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

Выходной файл "output.txt" должен содержать значение T, указанное с точностью до 5-го знака после запятой.

В случае если подходящее решение не может быть найдено, в выходной файл необходимо вывести  − 1.

Ограничения

Все входные значения являются целыми десятичными числами.

 − 104 ≤ (xi, yi, ui, vi) ≤ 104.

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

Входной файл (input.txt) Выходной файл (output.txt)
1
 2500  2500 -3000 -3000
-1000     0  1000  4000
    0 -1000  4000  3000
 0.48990
2
-1097   236  1000  1000
  200   178  1500   500
    0  -500 -1240   356
-1

Задача F. Ловушка для подвижных частиц

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

Условие

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

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

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

Определим кольцо, как область, заключенную между двумя окружностями с общим центром (x0, y0) и разными радиусами: r2 > r1 > 0. В этом случае исходное множество частиц можно условно разбить на три группы:

  1. частицы, попадающие во внутренний круг с центром в точке (x0, y0) и радиусом r1 > 0;
  2. частицы, заключенные между двумя окружностями с радиусами r1 и r2;
  3. частицы, лежащие за пределами внешнего круга с радиусом r2 > r1.

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

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

Требуется написать программу, которая по известному начальному положению частиц, исходным компонентам скорости и параметрам кольцевой области, производит расчет их траекторий в течение заданного промежутка времени. В качестве ответа вывести координаты положения частиц в равноотстоящие моменты времени tk = k ⋅ (T / m), где k = 1, 2, …, m.

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

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

В первой строке входного файла "input.txt" содержатся параметры расчетной области: x0, y0, r1, r2. Во второй строке указано значение T, задающее длину временного интервала, и число его подынтервалов m. Далее следует натуральное число n и последовательность из 4 × n вещественных чисел, задающих начальные координаты и скорости каждой из частиц: xi, yi, ui, vi, где i = 1, 2, …, n.

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

Выходной файл "output.txt" должен содержать координаты положения частиц в моменты времени tk (k = 1, 2, …, m), расположенные в том же порядке, что и во входном файле. Все значения должны быть указаны с точностью до 5-го знака после запятой.

Ограничения

Полагается, что ни одна из частиц в начальный момент времени не лежит на границе кольца.

2 ≤ r1 ≤ (r2 − 2) ≤ 10, 0 < T ≤ 20, 0 < m ≤ 10,

ui2 + vi2 ≤ 25, 0 < n ≤ 4000

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

Входной файл (input.txt) Выходной файл (output.txt)
1
 1.62400  4.86000  2.01152  4.21450
10.00000  4
 5
 2.24501 -2.75130 -0.46250  1.00000
-1.39080  6.92500  0.02731 -1.75240
-7.10643  2.32470  0.10561  0.27435
 2.07640  4.96800 -0.04658  0.94071
 3.00000  3.75400 -1.04060 -1.04520
 1.08876 -0.25130
-1.32252  2.54400
-6.84240  3.01057
 1.79231  6.39753
 0.09054  3.90417

-0.67633 -0.22719
 2.36153  1.88787
-6.57838  3.69645
 0.85566  4.23718
 1.22695  6.69642

-2.86015 -1.90584
 4.61717  4.01900
-6.31435  4.38232
 1.39629  4.06765
 3.58175  4.57937

-5.04397 -3.58449
 4.04359  7.86965
-6.05033  5.06820
 3.19249  5.59017
 0.69049  3.16606

Задача G. Пузыри на плоскости

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

Условие

Рассмотрим множество непрерывно растущих пузырей, расположенных на плоскости. Каждый такой пузырь представляет собой круг, заданный координатами своего центра (xi, yi) и радиальной скоростью vi, указывающей приращение его радиуса за единицу времени.

Известно, что рост отдельно взятого пузыря будет остановлен, как только он достигнет границы любого другого. При этом полагается, что в начальный момент времени (t = 0) радиусы всех пузырей равны нулю.

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

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

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

Во входном файле "input.txt" хранится натуральное число n, указывающее количество пузырей.
Далее следует набор из 3 × n вещественных чисел: xi, yi, vi.

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

Выходной файл "output.txt" должен содержать время окончания роста всех таких пузырей
и значения их радиусов ri в конечный момент времени.
Все значения должны быть записаны с точностью до 5-го знака после запятой.

Ограничения

 − 100 ≤ (xi, yi) ≤ 100, 0 ≤ vi ≤ 20,

2 ≤ n ≤ 500

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

Входной файл (input.txt) Выходной файл (output.txt)
1
 5
 3.05780 -1.53000  2.92010
-9.05000 -2.37000  1.57000
-7.01400  1.09000  3.06000
 4.05600  8.41000  2.24000
-3.89000 -3.57000  1.00000
2.05182
5.39393
1.36132
2.65327
4.59607
1.84717
2
 5
-1.15000  0.96070  3.01280
 9.38000 -2.37000  1.57000
-1.15000  0.96070  3.06000
 6.43010  4.23080  0.00000
 3.89000 -3.57000  2.00000
1.57412
0.00000
2.47137
0.00000
0.00000
3.14825

Задача H. Подвижный манипулятор

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

Условие

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

Пусть имеется манипулятор, состоящий из 2-х звеньев (костей), управляемых моторами. Каждый мотор может поворачивать соответствующую кость на некоторый положительный угол, заданный в радианах. Требуется, получив на вход координаты (x0, y0), определить, на сколько радиан нужно повернуть каждую из костей, чтобы манипулятор занял указанную позицию. Начало отсчета координат — крепление первой кости. Длины и углы поворота каждой из костей ограничены.

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

Входной файл "input.txt" содержит набор вещественных чисел:

R1, R2 — размеры 1-й и 2-й кости;

F1, F2 — максимальный раствор угла для каждой из костей;

x0, y0 — координаты назначения.

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

Выходной файл "output.txt" должен содержать значения φ1, φ2 — углы поворота для каждой из костей, указанные с точностью до 5-го знака после запятой.

Если решение не может быть найдено, вывести '-1'.

Ограничения

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

10 > R1 ≥ R2 > 0, π > (F1, F2) > 0,

x0 ∈ [ − 10, 10], y0 ∈ [0, 10]

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

Входной файл (input.txt) Выходной файл (output.txt)
1
 0.50000  0.25000
 3.14159  3.14159
 0.50000  0.50000
 0.54936  2.41886
2
 0.50000  0.50000
 3.14159  3.14159
-0.75000  0.75000
-1

1.152s 0.014s 35