Задача A. Вписанный цилиндр

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

Условие

Пусть имеется некоторый выпуклый многогранник P и проходящая через него прямая L, заданная в параметрическом виде:

X(t) = X0 + t ⋅ UD, Y(t) = Y0 + t ⋅ VD, Z(t) = Z0 + t ⋅ WD, где D = U2 + V2 + W2, t — произвольный скалярный параметр.

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

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

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

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

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

В окончании входного файла указан набор вещественных значений:
X0, Y0, Z0, U, V, W, R.

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

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

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

Ограничения

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

Прямая обязательно проходит сквозь внутреннюю
часть многогранника.

 − 10 ≤ (X0, Y0, Z0, U, V, W) ≤ 10, 0 < R ≤ 10.

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

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

Входной файл (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 4 5 6 7
4 0 1 5 4
4 1 2 6 5
4 2 3 7 6
4 3 0 4 7

-0.50000 -0.50000 -0.50000
 1.00000  1.00000  1.00000
 0.50000
1
-0.15892  1.89097

Задача B. Горы в галактике Дзета 2: Удачный кадр

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

Условие

Перед прочтением условия задачи рекомендуется ознакомиться с задачей «Горы в галактике Дзета».

Юный программист Вася продолжает своё путешествие по галактике Дзета на космическом корабле. Корабль оборудован камерой с углом обзора 90 градусов, которая может фотографировать, а также транслировать изображение с соотношением сторон 1:1. Вася обнаружил в начале координат планету радиуса R, которая вращается с угловой скоростью ω вокруг оси z (ось, направляющий вектор которой равен {0, 0, 1} (см. рис. 1).

Если ω  > 0, то планета вращается против часовой стрелки, и наоборот. На планете находится N гор. Гора номер i имеет высоту hi и в момент времени t = 0 координаты основания {xi, yi, zi}. Вася останавливает свой корабль и направляет камеру, которая находится в координатах (xc, yc, zc), в сторону вектора l⃗{xl, yl, zl}. Вертикальная ось камеры направлена в сторону вектора u⃗{xu, yu, zu} (положительное направление вертикальной оси – проще говоря, «верх» камеры) (см. рис. 2).

Рис. 1
Рис. 2

Вася хочет дождаться такого момента времени t, при котором в область видимости камеры попадёт максимально возможное количество вершин гор с этого ракурса. Поскольку нашего путешественника ждут другие планеты, ему требуется сделать фотографию до того, как планета совершит полный оборот с момента t = 0. Требуется написать программу, которая определит такое время t и выдаст список гор, видимых на фотографии в этот момент времени. Гора «видна», если на фотографию попала её вершина.

Для отладки решения вы можете использовать этот визуализатор.

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

Первые 4 строки содержат:

  1. Вещественное число R, вещественное число ω;
  2. Вещественные числа xc, yc, zc – координаты камеры в момент времени t;
  3. Вещественные числа xl, yl, zl – координаты направляющего вектора камеры;
  4. Вещественные числа xu, yu, zu – координаты направляющего вектора «верха» камеры;
  5. Натуральное число N;

В следующих N строках содержатся вещественные числа xi, yi, zi, hi – координаты оснований гор и их высоты.

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

В первой строке требуется вывести одно число t – оптимальный момент времени для съёмки.

Во второй строке требуется вывести одно число k – количество гор, которые будут видны в кадре в момент времени t.

В следующих k строках требуется вывести упорядоченные по возрастанию номера видимых в кадре гор. Горы нумеруются в порядке расположения во входных данных, начиная с 1.

Если не существует момент t, при котором видна хотя бы одна вершина горы, выведите  − 1. Если существует несколько оптимальных решений t, выведите любое из них.

Ограничения

50R500

 − 30≤ω ≤30

 − 5000xc, yc, zc, xl, yl, zl, xu, yu, zu, xi, yi, zi5000

R / 10hiR / 5

1N20000

Изображения вершин на камере никогда не совпадают.

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

Входной файл (input.txt) Выходной файл (output.txt)
1
500 17.75277
1000 0 0
-5 0 0
0 0 6
2
500 0 0 50
-500 0 0 50
10
1
2
2
423.6367 20.04418
563 -449 80
-3.318433 2.189247 -0.4418194
-0.460992 0.3041271 4.969406
5
-94.92951 347.2672 223.298 79.4897
105.1314 337.9636 -232.8005 79.1225
118.6561 358.101 192.7497 54.06856
-342.1483 -249.4405 13.49226 80.01097
-17.6792 124.43 -404.5648 58.64312
9.45
5
1
2
3
4
5

Задача C. VR-обсерватория

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

Условие

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

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

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

В начале входного файла "input.txt" записано натуральное число N, за которым следует ровно 3 ⋅ N координат точек (Xi, Yi, Zi).

Далее записано число M, за которым следует M запросов, каждый из которых задается вектором направления Dj = (Uj, Vj, Wj) и радиусом Rj.
При этом полагается, что длина вектора Dj соответствует фокусному расстоянию.

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

Выходной файл "output.txt" должен содержать M целых чисел — ответы на каждый запрос.

Ограничения

Гарантируется, что суммарное число точек во всех запросах не превосходит 106.

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

 − 106 ≤ (Xi, Yi, Zi) ≤ 106,  − 106 ≤ (Uj, Vj, Wj) ≤ 106, 0 < |Dj|, 0 ≤ Rj ≤ 106

1 ≤ N ≤ 105, 1 ≤ M ≤ 105

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

Входной файл (input.txt) Выходной файл (output.txt)
1
10
 40  25 -31
 12 -36  24
-45  10  37
-13  26 -51
 30  32  64
-16 -17  20
 21  23  35
 46 -14  18
 10 -30  20
 39 -19 -45

5
 3 -3 -2  0
 1 -3  2  0
 1  1  1  9
 7 -5  8  1
 1 -1 -1  8
0
2
4
0
5

Задача D. Кубик Рубика

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

Условие

Вам необходимо создать UV-развёртку для куба.

Центр куба должен находиться в центре координат, длина ребра куба составляет 2 метрa.

Цвета ячеек кубика Рубика:

Сверху белый, снизу желтый.

С положительного направления оси OX зелёный, с отрицательного направления оси OX синий.

С положительного направления оси OY красный, с отрицательного направления оси OY оранжевый.

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

Текстура доступна по ссылке.

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

Рис. 1
Рис. 2
Рис. 3
Рис. 4
Рис. 5

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

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 Байт.

Материал следует назвать "solve". При создании .obj файла, его необходимо назвать "solve", так, чтобы у вас получились файлы "solve.obj" и "solve.mtl".

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

Входной файл (input.txt) Выходной файл (output.png)
1
-2.49768 4.37707 3.69415
52.7631 0 209.466
Смотри рис. 4
2
0.232152 1.52857 -1.42144
119.549 0.665502 130.752
Смотри рис. 5

2.525s 0.012s 37