Автор: | А. Баранов | Ограничение времени: | 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 |
|
|
Автор: | 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).
Вася хочет дождаться такого момента времени t, при котором в область видимости камеры попадёт максимально возможное количество вершин гор с этого ракурса. Поскольку нашего путешественника ждут другие планеты, ему требуется сделать фотографию до того, как планета совершит полный оборот с момента t = 0. Требуется написать программу, которая определит такое время t и выдаст список гор, видимых на фотографии в этот момент времени. Гора «видна», если на фотографию попала её вершина.
Для отладки решения вы можете использовать этот визуализатор.
Первые 4 строки содержат:
В следующих N строках содержатся вещественные числа xi, yi, zi, hi – координаты оснований гор и их высоты.
В первой строке требуется вывести одно число t – оптимальный момент времени для съёмки.
Во второй строке требуется вывести одно число k – количество гор, которые будут видны в кадре в момент времени t.
В следующих k строках требуется вывести упорядоченные по возрастанию номера видимых в кадре гор. Горы нумеруются в порядке расположения во входных данных, начиная с 1.
Если не существует момент t, при котором видна хотя бы одна вершина горы, выведите − 1. Если существует несколько оптимальных решений t, выведите любое из них.
50≤R≤500
− 30≤ω ≤30
− 5000≤xc, yc, zc, xl, yl, zl, xu, yu, zu, xi, yi, zi≤5000
R / 10≤hi≤R / 5
1≤N≤20000
Изображения вершин на камере никогда не совпадают.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 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 |
|
|
Автор: | Завгороднев А.А. | Ограничение времени: | 5 сек | |
Входной файл: | input.txt | Ограничение памяти: | 1512 Мб | |
Выходной файл: | output.png | |||
Максимальный балл: | 100 |
Вам необходимо создать UV-развёртку для куба.
Центр куба должен находиться в центре координат, длина ребра куба составляет 2 метрa.
Цвета ячеек кубика Рубика:
Сверху белый, снизу желтый.
С положительного направления оси OX зелёный, с отрицательного направления оси OX синий.
С положительного направления оси OY красный, с отрицательного направления оси OY оранжевый.
Текстура каждой грани кубика представляет из себя квадрат 450 на 450 пикселей, с девятью внутренними квадратами, размером 130 на 130 пикселей, разделенными чёрными полосами, шириной 15 пикселей.
Текстура доступна по ссылке.
Модель проверяется на основе попиксельного сравнения рендеров с указанных во входном файле ракурсов. В качестве метрики для сравнения рендеров моделей используется величина dssim по каждому цветовому каналу. Баллы за каждый тест начисляются в зависимости от величины метрики.
Источник света:
Type | Sun |
Color | (255, 255, 255) |
Specular | 1.00 |
Strength | 10.0 |
Location | (10 m, -10 m, 20 m) |
Rotation | (30, 30, 0) |
Камера:
Focal Length | 50mm |
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 |
|
|