Районная олимпиада по программированию. 10 ноября 2007 года Задача 1 Треугольники (30 баллов) Имя входного файла: Имя выходного файла: Максимальное время работы на одном тесте: Максимальный объем используемой памяти: tri.in tri.out 1 секунда 64 мегабайта Фигурой первого уровня назовем обычный равносторонний треугольник. Фигура i-го уровня получается из фигуры (i–1)-го уровня следующим образом. Каждый из маленьких равносторонних треугольников, кроме треугольников, образованных средними линиями треугольника большего размера, разбивается на 4 равносторонних треугольника с вдвое меньшей стороной. На рисунке изображены фигуры первого, второго и третьего уровней: Напишите программу, которая будет вычислять, сколько всего треугольников содержит фигура N-го уровня (необходимо учитывать не только “маленькие” треугольники, а вообще все треугольники – в частности, треугольник, выделенный на рисунке жирными линиями). Формат входных данных Во входном файле находится единственное целое число N (1 ≤ N ≤ 35) – уровень фигуры. Формат выходных данных В выходной файл выведите единственное число – количество треугольников в данной фигуре. Примеры tri.in 1 2 3 tri.out 1 5 17 Страница 1 из 6 Районная олимпиада по программированию. 10 ноября 2007 года Задача 2 Книги (40 баллов) Имя входного файла: Имя выходного файла: Максимальное время работы на одном тесте: Максимальный объем используемой памяти: books.in books.out 1 секунда 64 мегабайта Совсем недавно у Пети был день рождения. Ему подарили много интересных книг. Наконец, у Пети появилось свободное время, и он решил прочитать одну из них. Все они так понравились Пете, что он никак не мог выбрать книгу, которую он прочтет первой. После долгих раздумий он нашел способ справиться с этой проблемой. Пусть k – количество слов в названии некоторой книги; k1 , k 2 ,, k n – последовательность длин этих слов. Характеристикой книги Петя назвал число k1 k 2 k3 (1) n1 k n . 2 2 2 2 Например, у книги с названием «Introduction to algorithms» характеристика будет равна 12 2 10 2 240 . 2 2 Петя решил, что будет читать ту книгу, характеристика которой максимальна. Если же окажется, что таких книг несколько, то он, отчаявшись что-либо выбрать, пойдет играть в футбол. Ваша задача написать программу, определяющую, какую из книг будет читать Петя. Формат входных данных Первая строка входного файла содержит число N – количество книг, подаренных Пете (1 N 500) . Следующие N строк содержат названия этих книг. Все названия книг различны и состоят не более чем из 250 латинских букв и пробелов. Гарантируется, что первый и последний символы строки не являются пробелами. Формат выходных данных Выведите название книги, которую нужно выбрать Пете. Если Пете придется играть в футбол, выведите «PLAY FOOTBALL». Примеры books.in books.out 3 Quantum optics Introduction to algorithms Computers in our life Introduction to algorithms 2 HTML Inter Net PLAY FOOTBALL Система оценки Баллы за пройденные тесты с ответом «PLAY FOOTBALL» начисляются только в том случае, если пройден хотя бы один тест с ответом, отличным от «PLAY FOOTBALL». Страница 2 из 6 Районная олимпиада по программированию. 10 ноября 2007 года Задача 3 Светофоры (60 баллов) Имя входного файла: Имя выходного файла: Максимальное время работы на одном тесте: Максимальный объем используемой памяти: traffic.in traffic.out 1 секунда 64 мегабайта Профессор Иван Васильевич вновь спешит на работу. Дом Ивана Васильевича и университет, в котором он работает, находятся на разных концах проспекта Января – самой длинной улицы в городе. Иван Васильевич едет на своей машине, и все было бы замечательно, если бы не бесчисленное множество светофоров, встречающихся на пути. Всего на проспекте Января N светофоров. Светофоры устроены очень просто: сразу после установки на светофоре включается красный сигнал. Через ri секунд светофор переключается на зеленый сигнал. Спустя еще gi секунд, на светофоре вновь загорается красный сигнал, и процесс повторяется. Иван Васильевич может проехать только на зеленый сигнал светофора. При этом, если зеленый сигнал гаснет как раз в тот момент, когда профессор подъезжает к светофору, то он обязан остановиться. Ваша задача определить минимальное время, которое потребуется Ивану Васильевичу, чтобы доехать до университета. Вы можете считать, что машина профессора едет со скоростью 1 м/с и способна мгновенно разгоняться и останавливаться. Формат входных данных Первая строка входного файла содержит два целых числа N и S (0 N 1000, 1 S 10 9 ) – количество светофоров и расстояние до университета. Следующие N строк содержат описания светофоров. В (i+1)-ой строке находятся пять целых чисел xi , ri , g i , ci , t i , разделенных пробелами, где xi (0 xi S ) – расстояние в метрах от дома профессора до светофора; ri и gi (0 ri , g i 10000) – характеристики светофора, описанные выше. Оставшиеся два числа описывают состояние светофора в момент времени, когда Иван Васильевич начинает движение. Если ci = 0, то на светофоре горит красный сигнал; если ci = 1 – зеленый. ti (t i 0) – время в секундах, через которое светофор переключится. Гарантируется, что x1 x2 xn . Формат выходных данных Выведите минимальное время в секундах, за которое Иван Васильевич сможет добраться на работу. Примеры traffic.in 1 3 2 3 8 10 4 4 1 2 10 4 4 0 2 1 1 0 1 traffic.out 13 11 Страница 3 из 6 Районная олимпиада по программированию. 10 ноября 2007 года Задача 4 Дилеры (60 баллов) Имя входного файла: Имя выходного файла: Максимальное время работы на одном тесте: Максимальный объем используемой памяти: dealers.in dealers.out 1 секунда 64 мегабайта Работать дилером в казино занятие довольно скучное и однообразное. Сидишь и мешаешь карты... Что тут может быть интересного? Дабы не умереть со скуки, дилеры придумывают различные способы перетасовки карт. Например, они придумали такой способ перетасовки. С колодой проделывают следующую последовательность действий: вытаскивают первую сверху карту и кладут вниз колоды, затем в полученной колоде вытаскивают вторую сверху карту и тоже кладут вниз, потом то же самое делают с третьей... и т.д. до предпоследней карты, которую также кладут вниз колоды. Такой способ перетасовки они назвали особым. После долгого рабочего дня дилеры собираются, чтобы отдохнуть. Обычно они играют в карты, поскольку ни во что другое играть не умеют. На деньги дилерам играть не интересно и поэтому, как правило, проигравший должен перетасовать колоду из N карт особым способом некоторое количество раз так, чтобы карты в колоде оказались точно в таком же порядке, что и до перетасовок. Ваша задача определить, сколько секунд придется тасовать колоду проигравшему дилеру, если на каждую перетасовку он тратит ровно одну секунду. Формат входных данных В первой строке входного файла находится целое число N (2 ≤ N ≤ 1000) – количество карт в колоде. Формат выходных данных Выведите минимальное количество секунд, которое потребуется дилеру. Примеры dealers.in 2 7 36 dealers.out 2 6 60 Система оценки Тесты, для которых ответ меньше 106, будут оцениваться 30 баллами. Страница 4 из 6 Районная олимпиада по программированию. 10 ноября 2007 года Задача 5 Камни (80 баллов) Имя входного файла: Имя выходного файла: Максимальное время работы на одном тесте: Максимальный объем используемой памяти: stones.in stones.out 1 секунда 64 мегабайта Вася и Петя играют в новую игру. Игра ведется на прямоугольном поле с размерами 1×N. Поле разделено на N квадратных клеток, последовательно пронумерованных от 1 до N. В начале игры Вася кладет некоторое число камней в каждую клетку. При этом суммарное количество разложенных камней равно N. После этого Петя должен за минимально возможное количество ходов разложить камни так, чтобы в каждой клетке лежал ровно один камень. За один ход разрешается взять произвольное число камней с некоторой i-ой клетки и распределить их между клетками с номерами i–1 и i+1. Ваша задача помочь Пете найти требуемую последовательность ходов. Формат входных данных В первой строке содержится целое число N – количество клеток (1 ≤ N ≤ 100000). На второй строке находятся N целых чисел ki, разделенных пробелами – количество камней, положенных Васей в i-ю клетку. Формат выходных данных В первой строке выходного файла выведите минимальное число ходов. В каждой следующей строке выведите описания ходов в формате “p a b”, где p – номер клетки, откуда берутся камни; a – количество камней, перекладываемых на (p–1)-ю клетку (если p=1, то a=0); b – количество камней, перекладываемых на (p+1)-ю клетку (если p=N, то b=0). Если существует несколько последовательностей ходов, удовлетворяющих условию задачи, выведите любую из них. Пример stones.in 5 1 0 4 0 0 stones.out 2 3 1 2 4 0 1 Страница 5 из 6 Районная олимпиада по программированию. 10 ноября 2007 года Задача 6 Радио (80 баллов) Имя входного файла: Имя выходного файла: Максимальное время работы на одном тесте: Максимальный объем используемой памяти: radio.in radio.out 1 секунда 64 мегабайта В стране Флатландии появилась новая радиостанция. Для трансляции своих передач ее владельцы закупили K передатчиков. В целях экономии было решено установить их на уже имеющиеся в стране радиовышки. Всем известно, что все N радиовышек Флатландии располагаются на одной прямой. Известно, что чем ближе друг к другу расположены два передатчика, тем сильнее их взаимное влияние и тем больше помех в принимаемом радиосигнале. Поэтому владельцы радиостанции хотят установить K передатчиков на вышках так, чтобы минимальное расстояние между передатчиками было максимально возможным. Ваша задача написать программу, определяющую это расстояние. Формат входных данных В первой строке находится два целых числа: N – количество вышек и K – количество передатчиков (1 < K ≤ N ≤ 10000). Далее следует N различных неотрицательных целых чисел, разделенных пробелами – координаты радиовышек. Координаты отсчитываются вдоль прямой, на которой расположены вышки, и не превосходят 109. Формат выходных данных Выведите наибольшее возможное минимальное расстояние между передатчиками. Пример radio.in 6 3 5 20 2 11 7 15 radio.out 9 Страница 6 из 6