Задача A. Gorn

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

Условие

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

Когда Вильгельм в первый раз попадает по вражескому гладиатору, он наносит ему D единиц урона, гладиатор при этом теряет D единиц здоровья. При каждом следующем попадании по этому гладиатору урон увеличивается на K единиц из-за ослабевающей брони гладиатора. При попадании по новому гладиатору урон также начинается с D и увеличивается с каждым попаданием. Гладиатор погибает, когда количество его здоровья достигает нуля или становится отрицательным.

Каково наименьшее количество стрел, которые должен потратить Вильгельм, чтобы убить всех гладиаторов?

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

Первая строка входного файла содержит целые числа N, D и K. В следующей строке содержится N целых чисел hi — количество здоровья у вражеских гладиаторов.

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

Программа должна вывести одно целое число — количество стрел, которые необходимо потратить.

Ограничения

1 ≤ N ≤ 104

1 ≤ D≤ 105

1 ≤ K ≤ 103

Описание подзадач и системы оценивания

Баллы за 1 подзадачу начисляются только в случае, если все тесты для этой подзадачи успешно пройдены. Баллы за подзадачу 2 начисляются за каждый пройденный тест, если тесты необходимых подзадач пройдены.

Подзадача Баллы Дополнительные ограничения Необходимые подзадачи
hi
1401 ≤ hi ≤ 102
2601 ≤ hi ≤ 10151

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

Входной файл (input.txt) Выходной файл (output.txt)
1
4 1 1
1 2 3 4
8

Задача B. Мортира

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

Условие

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

Одно из защитных орудий в игре — мортира. Это пушка которая может регулировать угол наклона в пределах от 45 до 90 градусов от земли. Сама себе пушка урон нанести не может.

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

Ваши коллеги уже создали для вас простую тестовую сцену, и даже написали за вас API. Вам лишь необходимо реализовать интерфейс. Ссылка на репозиторий с проектом: https://github.com/Lukaviy/AI-for-defense.git.

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

Необходимо реализовать класс CannonAI со следующим интерфейсом:

     
        public class CannonAI : ICannonAI
        {
            // Расстояние на котором находится цель
            void SetTarget(double distance);
            // Угол наклона в градусах в который нужно установить пушку перед выстрелом
            double GetShootAngle();
            // Информация о дальности полета снаряда
            void FeedbackHitDistance(double distance);
        }
      
   

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

Файл с решением должен содержать только реализацию класса CannonAI. В качестве среды программирования необходимо выбирать C#.

Ограничения

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

45 ≤ Angle ≤ 90

10 ≤ Distance ≤ 106


Задача C. RollerBall-1

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

Условие

Юный программист Вася решил поиграть в RollerBall. Цель игры — собрать как можно больше монет, которые находятся в лабиринте. Для того, чтобы взять монетку, её границы нужно пересечь мячом, которым Вася может управлять. У мяча есть энергия, которая расходуется на каждом шаге.

Вася хочет собрать очень много монет и для этого решил написать программу, которая бы управляла мячом и сама собирала все монеты в лабиринте. К сожалению, Вася очень плохо знает C# и просит Вас ему помочь. Проект https://github.com/BabichMikhail/NTI_TaskC_Maze, который написал Вася, уже содержит игру и умеет вводить и выводить файлы нужных форматов. Вам осталось реализовать класс AutoBallControl для управления мячом.

Первый тест совпадает с примером, содержащимся в файле input.txt в репозитории проекта.

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

Входной файл содержит 5 целых чисел S, R, C, N, E — номер (seed) лабиринта, количество строк и столбцов лабиринта, количество монет, количество энергии у мяча.

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

Файл с решением должен содержать реализацию класса AutoBallControl.

Ограничения

0 ≤ S ≤ 107

1 ≤ R ≤ 600

1 ≤ C ≤ 600

2 ≤ R * C ≤ 600

0 ≤ N ≤ 9

0 ≤ E ≤ 3*104


Problem F. RollerBall-2

Author:Mikhail Babich   Time limit:30 sec
Input file:input.txt   Memory limit:256 Mb
Output file:output.txt  
Maximum points:100  

Statement

Young programmer Vasya like game RollerBall. He want take part in competition where participants compete in passage of maze for speed. Game goal - take coin for minimum step count. In order to take a coin, ball must cross coin boundaries. Ball has energy which spent on every step.

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

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

Output file format

Файл с решением должен содержать реализацию класса AutoBallControl.


0.062s 0.003s 19