ПЛАНИРОВКА КУХНИ

advertisement
Отборы на IOI-2007, ІV тур
ПЛАНИРОВКА КУХНИ
Входной файл:
Выходной файл:
kitchen.in
kitchen.out
Крупная межгалактическая сеть мебельных магазинов Galactic-Мебель недавно вышла на рынок мебели для
кухонь в звездной системе LoST-2007. В этой звездной системе во всех квартирах кухни имеют форму
прямоугольника размером a на b метров. При этом вдоль одной из стен принято ставить стол, в смежной с ней
стене находится окно. Таким образом, для размещения различных кухонных шкафчиков остается угол со
сторонами a и b метров.
Для экономии места в этой звездной системе принято ставить шкафчики вплотную друг к другу и к углу
кухни. Кроме этого, сами шкафчики встраиваются внутрь стены, то есть вдоль стены расположены только их
дверцы.
В звездной системе LoST-2007 используется n типов кухонных шкафчиков. Каждый тип шкафчиков
характеризуется своей шириной wi, при этом на кухне должен присутствовать ровно один экземпляр каждого
типа шкафчиков.
Недавно директор маркетингового отдела Galactic-Мебель заметил, что он может предложить клиентам
несколько вариантов расположения шкафчиков на кухне. Различными считаются варианты, которые отличаются
расположением хотя бы одного шкафчика. При этом шкафчики различных типов могут иметь одинаковую
ширину, однако отличаются внешней отделкой. Так что даже размещения, которые отличаются лишь позициями
шкафчиков с равной шириной, считаются различными.
Например, пусть a = 3, b = 4 и есть два типа шкафчиков, шириной 1 и 2, соответственно.
4
1
3
2
кухня
шкафчики
Тогда возможно шесть планировок кухни. Возможные планировки показаны на рисунке.
Требуется по заданным размерам кухни и шкафчиков найти число различных планировок.
Формат входных данных: первая строка входного файла содержит три целых числа: a, b и n (1 ≤ a ≤ 300,
1 ≤ b ≤ 300, 1 ≤ n ≤ 100). Каждая из следующих n строк содержит целое число wi (1 ≤ wi ≤ 300) — ширину
соответствующего шкафчика.
Формат выходных данных: выведите в выходной файл количество различных планировок кухни.
Примеры входных и выходных данных:
kitchen.in
3 4 2
1
2
2 2 1
kitchen.out
6
0
Отборы на IOI-2007, ІV тур
3
1 1 3
1
1
1
1 4 3
1
2
2
0
2
ЗАДАЧА ДЛЯ МЛАДШЕГО БРАТА
Входной файл: dist.in
Выходной файл: dist.out
Даниил хочет подготовить своего младшего брата для участия в олимпиадах по информатике. Каждый день
он задает ему по одной задаче. Вот и сегодня он подготовил задачу по геометрии. Даниил нарисовал на листочке
две ломаные, и попросил найти две точки A и B, лежащих на разных ломаных, расстояние между которыми
минимально.
Напишите программу, которая решит эту задачу.
Формат входных данных: в первой строке записано число N (2 ≤ N ≤ 1000) – количество узлов первой
ломаной. В следующей строке перечислены N пар координат узлов первой ломаной. Все координаты целые и не
превышают 104 по абсолютной величине. В третьей и четвертой строке описана вторая ломаная в аналогичном
формате.
Формат выходных данных: в первой строке выведите расстояние между искомыми точками A и B. Во
второй и третьей строке выведите соответственно координаты точки A и точки B. Выводите ответ с 9 знаками
после запятой. Ваш ответ будет засчитан, если он отличается от правильного не более, чем на 10-4.
Пример входных и выходных данных:
dist.in
2
0 0 1 0
2
0 1 1 1
2
0 0 1 1
2
0 1 1 0
dist.out
1.000000000
0.000000000 0.000000000
0.000000000 1.000000000
0.000000000
0.500000000 0.500000000
0.500000000 0.500000000
МАКСИМАЛЬНАЯ СУММА
Входной файл:
Выходной файл:
maxsum.in
maxsum.out
Задан ориентированный граф, имеющий n вершин и m ребер. В каждой вершине i графа записано некоторое
целое число сi. Рассмотрим следующую игру на этом графе. Сначала игрок ставит фишку в вершину 1 и получает
с1 очков. Затем он делает k ходов; каждый ход состоит в перемещении фишки по ребру, исходящему из текущей
вершины, и после каждого хода игрок получает количество очков, равное числу, записанному в вершине, куда он
перешел.
Зная, что граф таков, что игрок сможет сделать k ходов из начальной вершины, найдите максимальную
сумму очков, которую он сможет при этом набрать.
Формат входных данных: в первой строке входного файла заданы три числа – n, m и k (2 ≤ n ≤ 20, 1 ≤ m ≤
400, 1 ≤ k ≤ 1015).
Отборы на IOI-2007, ІV тур
Во второй строке записаны n чисел с1 с2 … сn через пропуск (1 ≤ сj ≤ 100). Это числа, записанные в
вершинах.
Следующие m строк содержат по два числа ui и vi каждая (1 ≤ ui, vi ≤ n); эти числа обозначают, что в графе
есть ребро из ui в vi.
Все числа во входном файле – целые.
Формат выходных данных: в первую строку выходного файла выведите число S – максимальную сумму,
которую можно получить, сделав k ходов на графе.
Пример входных и выходных данных:
maxsum.in
3 4 5
1 3 4
1 2
2 2
2 1
1 3
maxsum.out
16
Download