Statements

advertisement
Районная олимпиада по программированию. 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) n1 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
Download