Задача A. Треугольник на цилиндре

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

Условие

Заказчик выпускает 3-х мерный цилиндр единичного радиуса, на котором отмечены три точки, заданные в цилиндрических координатах i,zi), i = 1,2,3.

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

В дальнейшем, из этого цилиндра сделают развёртку путём разрезания цилиндра по любой прямой параллельной оси Z и разворачивания его на плоскость. Заказчик требует, чтобы любая такая прямая сечения пересекала этот треугольник не более 2-х раз.

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

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

В i-ой (i = 1,2,3) строке содержатся числа ϕi,zi – координаты точек на цилиндре. При этом значения углов ϕi указаны в градусах.

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

Выходной файл содержит одно число S – минимальную возможную площадь треугольника с точностью не менее 5-го знака после запятой. Если такой треугольник построить нельзя – выведите 0.

Ограничения

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

 − 180 ≤ ϕi ≤ 180,

 − 104 ≤ zi ≤ 104.

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

Входной файл (input.txt) Выходной файл (output.txt)
1
0 1
0 0
90 0
0.78540
2
45 4
45 0
-45 0
3.14159

Задача B. Разрезание многогранника

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

Условие

Пусть имеется выпуклый многогранник и две плоскости, каждая из которых задается ортогональным к ней вектором U⃗k.

Известно, что плоскость можно сдвигать относительно начала координат
путем смещения всех составляющих ее точек на вектор S⃗k = tk ⋅ U⃗k|U⃗k|, где tk — произвольный скалярный параметр.

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

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

В начале входного файла "input.txt" записано число N, за которым следует 3 × N вещественных координат вершин.

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

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

В окончании входного файла записаны компоненты векторов, задающих плоскости
(сначала для 1-го, а затем для 2-го).

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

Если решение существует, в выходной файл "output.txt" следует вывести число 1
и пару вещественных параметров t1 и t2, указанных с точностью не менее 5-го знака после запятой.

В противном случае, выходной файл должен содержать единственное число 0.

Ограничения

Исходный многогранник является невырожденным (имеет ненулевой объем).
Все грани представляют собой выпуклые многоугольники.

Координаты всех вершин по модулю не превосходят 10.
Число вершин и граней не превосходит 100.

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

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

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

6
4 0 1 2 3
4 7 6 5 4
4 5 6 2 1
4 0 3 7 4
4 7 3 2 6
4 5 1 0 4

-0.25000  1.50000 -1.50000
-0.75000  1.50000 -2.00000
1
-0.25972  0.26752

Задача C. Битый шлем

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

Условие

Вам необходимо исправить модель VR-шлема. Она содержит множество ненужных полигонов и "плохой" геометрии.

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

Модель доступна по ссылке.

Перед тестированием все полигоны триангулируются.

Модель проверяется на основе попиксельного сравнения рендеров с указанных во входном файле ракурсов. В качестве метрики для сравнения рендеров моделей используется величина dssim по каждому цветовому каналу. Баллы за каждый тест начисляются в зависимости от количества полигонов модели и он величины метрики.

Источник света:

TypeSun
Color(255, 255, 255)
Specular1.00
Strength10.0
Location(10 m, -10 m, 20 m)
Rotation(30, 30, 0)

Камера:

Focal Length50mm

Render Engine: Eevee

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

Во входном файле содержатся x, y, z — координаты камеры в метрах и rx, ry, rz — углы поворота в радианах.

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

В качестве решения следует отправлять файл формата OBJ (расширение .obj). Размер файла не должен превышать 999997 Байт.

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

Входной файл (input.txt) Выходной файл (output.png)
1
-3.70708 -3.4139 3.69415
52.7831 0 -47.6
2
-4.0122 3.04949 3.69415
52.7831 0 -127.479

0.534s 0.030s 25