Автор: | Dmitriy Merzlyakov | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 512 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 100 |
Известно, что некоторая галактика Дзета состоит из планет, поверхность которых является идеальной сферой. На всех этих планетах расположены несколько гор, которые являются конусами. Будем говорить, что точка является основанием горы, если она является центром круга в основании соответствующего конуса. Основание любой горы находится на поверхности сферы. Вершины гор расположены по направлению вектора, проведённого из центра планеты к основанию горы.
Юный программист Вася путешествует по галактике на космическом корабле и встречает одну из таких планет радиусом R, которая расположена в начале координат. В корабле нет иллюминаторов, зато есть камера с углом обзора 90 градусов, которая может фотографировать, а также транслировать изображение с соотношением сторон 1:1. Вася решает сделать фотографию планеты в тот момент, когда камера находилась в положении (xc, yc, zc) и была направлена в сторону вектора l⃗{xl, yl, zl}. Поскольку по пути космический корабль могло развернуть, то дополнительно укажем, что вертикальная ось камеры была направлена в сторону вектора u⃗{xu, yu, zu} (положительное направление вертикальной оси – проще говоря, «верх» камеры) (см. рис. 1). Известно, что на планете находятся N гор, каждая высотой hi, и основания которых в момент фотосъёмки были расположены в точках пространства {xi, yi, zi}.
Васе не терпится узнать, сколько и какие именно горы будет «видно» на его фотографии (рис. 2), и, пока изображение обрабатывается компьютером, он решил написать программу, чтобы выяснить это. Будем говорить, что гора «видна», если на фотографию попала её вершина. Помогите Васе написать программу, которая будет это определять.
Примечание
Гарантируется, что ни одна вершина горы в кадре не заслонена другой горой.
В качестве тестирующего модуля вы можете использовать этот визуализатор.
Каждая строка содержит соответственно:
В следующих N строках содержатся вещественные числа xi, yi, zi, hi – координаты оснований гор и их высоты.
В первой строке требуется вывести одно число k – количество гор, которые будут видны в кадре.
В следующих k строках требуется вывести номера (по возрастанию) видимых в кадре гор (горы нумеруются в том порядке, в котором они были расположены во входных данных, начиная с 1).
50≤R≤500
− 5000≤xc, yc, zc, xl, yl, zl, xu, yu, zu, xi, yi, zi≤5000
R / 10≤hi≤R / 5
1≤N≤20
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Ян Т.В. | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 1512 Мб | |
Выходной файл: | output.jpg | |||
Максимальный балл: | 100 |
Вам необходимо разработать фрагментный шейдер для визуализации звёзд в зависимости от температуры звезды T.
Спектральная классификация звёзд
красные звёзды #FF0000 |
жёлтые звёзды #FFFF00 |
белые звёзды #FFFFFF |
голубые звёзды #0000FF |
Шейдер проверяется на основе попиксельного сравнения рендеров. В качестве метрики для сравнения рендеров используется величина dssim по каждому цветовому каналу. Баллы за каждый тест начисляются в зависимости от величины метрики.
Во входном файле содержатся T — температура звезды.
Для прохождения тестов необходимо объявить переменную, в которую подставляются значения температур проверяющим модулем следующим образом:
uniform float T
В качестве решения следует отправлять файл формата FS
(расширение .fs
) на GLSL
. В качестве среды разработки необходимо указывать Python
.
Для тестирования работы фрагментного шейдера можете использовать онлайн средства, например, Shdr Editor
№ | Входной файл (input.txt ) |
Выходной файл (output.jpg ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Zokter | Ограничение времени: | 60 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 100 |
Имеются 3 подключенных к одному контроллеру лампы. Левая (далее Л), средняя (далее С) и правая (далее П)
Каждая из ламп имеет некоторую, неизвестную заранее, яркость. Каждый такт загорается одна лампа, номер которой определяется неизменяющейся последовательностью. Алгоритм определения номера загорающейся лампы смотреть в файле SceneControlScript.cs. После чего у загоревшейся лампы снимается 1 единица яркости.
Вам требуется определить сколько тактов сможет выполняться последовательность, при условии того, что она прекратится как только попытается зажечь лампу с нулевой максимальной яркостью.
Для реализации алгоритма вам предоставляется сцена Unity
, на которой расположены 3 источника света. Взаимодействие с ними реализовано в дополнительном объекте controller
. Код с вашим алгоритмом должен находиться в предусмотренном классе Solution
. Другие изменения в сцене учтены не будут.
controller
предоставляет следующие функции для работы со сценой:controller.Pause()
- останавливает моделирование ("лампочки" перестают зажигаться).controller.Resume()
- запускает моделирование с того же момента на котором оно было остановлено.controller.getCurentTime()
- возвращает количество тактов с начала моделирования.controller.getIntensityOf(int index)
- возвращает оставшуюся яркость лампы по индексу (Л - 0, С - 1, П - 2).controller.getLamps()
- возвращает массив объектов ламп.controller.getLamps().Enabled
- свойство возвращающее true
/false
в зависимости от того горит ли лампа.controller.setAnswer(int answer)
- заканчивает моделирование, записывает в выходной файл переданное в данную функцию значение. (Предполагается что вывод количества тактов будет передан в данную функцию).
Изначально сцена находится на паузе. Моделирование начнется как только вы вызовете controller.Resume()
. Кроме того, лимит горения ламп может быть большим.
Проект
https://github.com/zokter/OldLamps.git
,
Вам осталось реализовать класс Solution
.
Вы можете тестировать свои решения, изменяя данные, содержащиеся в файле input.txt
в коренном репозитории проекта.
Входной файл input.txt
содержит строку состоящую из 3-х чисел, разделенных пробелами, x, y, z - определяющими начальную яркость для каждой из ламп Л, С, П соответственно.
Файл с решением должен содержать реализацию класса Solution
. Количество секунд, полученное вашим решением, должно быть представлено целым числом. Ответ необходимо выводить при помощи controller.setAnswer(int answer)
.
0 ≤ x ≤ 106
0 ≤ y ≤ 106
0 ≤ z ≤ 106
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|