Задача A. Тета - Университет ИТМО

advertisement
Кружок олимпиадного программирования
Университет ИТМО, 4 сентября 2015
Задача A. Тета
Имя входного файла:
Имя выходного файла:
Ограничение по времени:
Ограничение по памяти:
стандартный ввод
стандартный вывод
1 секунда
64 мегабайта
Тётя Тета работает кассиром в буфете. Все знают, что она очень хорошая. Она всегда старается
сделать так, чтобы Вы потратили как можно меньше денег в буфете.
Как ей это удается? Стратегия очень проста. В буфете продается множество блюд по известной
цене. Каждый день буфет предлагает бизнес-ланч. В бизнес-ланч входит 4 блюда (обычно это суп,
второе, салат и десерт). Цена бизнес-ланча всегда меньше или равна сумме цен каждого блюда,
которое в него входит. Когда Тета видит, что Вы можете потратить меньше денег, заплатив за
бизнес-ланч полностью, чем за некоторые блюда в отдельности, она выставляет счёт за них по цене
бизнес-ланча. Таким образом в вашем кармане может остаться больше денег.
Вы стоите на кассе со своими блюдами и желаете узнать цену, которую необходимо заплатить.
Помогите тёте Тета, написав программу подсчета минимальной стоимости за выбранные вами блюда.
Заметим, что Тета может включить в счёт несколько порций бизнес-ланча, если так будет дешевле.
Формат входных данных
На первой строке находится целое число K (1 ⩽ K ⩽ 20), количество блюд в буфете. Для
простоты, блюда будем обозначать числами от 1 до K.
На второй строке K чисел ci , стоимость каждого блюда по отдельности (1 ⩽ ci ⩽ 250).
На третьей строке записано число X (1 ⩽ X < 1000), цена бизнес-ланча.
На четвертой строке 4 различных числа, номера блюд, входящих в бизнес ланч.
На пятой строке находится число T (1 ⩽ T ⩽ 20), количество выбранных Вами блюд.
На следующей строке номера блюд, которые Вы выбрали. Некоторые блюда в Вашем выборе
могут совпадать.
Формат выходных данных
Выведите единственное число, минимальную цену за выбранные Вами блюда.
Примеры
стандартный ввод
7
10 6 8 9 4 5 3
14
1 2 3 4
5
1 3 4 6 7
6
12 5 7 8 9 3
14
4 3 1 2
5
1 2 1 6 6
стандартный вывод
22
32
Замечание
В первом примере Вы выбрали блюда с номерами 1, 3 и 4. Они входят в бизнес-ланч и Тета
включит в счёт цену бизнеса. Блюда 6 и 7 не входят в бизнес и Вы заплатите за них полную цену.
Во втором примере Вы взяли две порции блюда номер 1. Тета включит одну порцию блюда
1 и блюдо 2 в бизнес, а за вторую порцию блюда 1 Вы заплатите полностью (так как невыгодно
включать бизнес еще раз только из-за одной порции блюда 1). Так же за две порции блюда номер
6 Вы заплатите полную стоимость, так как оно не входит в бизнес.
Страница 1 из 4
Кружок олимпиадного программирования
Университет ИТМО, 4 сентября 2015
Задача B. Среднее
Имя входного файла:
Имя выходного файла:
Ограничение по времени:
Ограничение по памяти:
стандартный ввод
стандартный вывод
2 секунды
64 мегабайта
Задан массив из n целых чисел. Найдите отрезок из не менее, чем k подряд идущих элементов,
с максимально возможным значением среднего арифметического элементов отрезка.
Формат входных данных
Первая строка ввода содержит два целых числа n (1 ⩽ n ⩽ 3 · 105 ) и k (1 ⩽ k ⩽ n). Вторая
строка ввода содержит n целых чисел ai (1 ⩽ ai ⩽ 106 ).
Формат выходных данных
Введите максимально возможное среднее значение с погрешностью не более 0.0001.
Примеры
4
1
4
2
6
7
стандартный ввод
1
2 3 4
2
4 3 4
3
1 2 1 3 6
стандартный вывод
4.000000
3.666666
3.333333
Замечание
В тестах на 30% от общей суммы баллов n не больше 5000.
Страница 2 из 4
Кружок олимпиадного программирования
Университет ИТМО, 4 сентября 2015
Задача C. Раскраска
Имя входного файла:
Имя выходного файла:
Ограничение по времени:
Ограничение по памяти:
стандартный ввод
стандартный вывод
2 секунды
64 мегабайта
Мальчик Боян любит раскраски. У Бояна есть k цветных карандашей, но он не любит красочные
картинки, поэтому решил покрасить каждое изображение, используя не более трех разных цветов.
Кроме того, Боян никогда не красит две соседние области, используя тот же цвет, потому что,
как он выразился, "а зачем тогда между ними полосочка?"Две области считаются соседними, если
их граница имеет по крайней мере одну общую точку. Например, участки, обозначенные 4 и 3 (см
рисунок ниже) являются смежными, в то время как участки 1 и 2 не являются. Кроме того, окраска
изображения ниже соответствует всем требованиям Бояна.
Прежде, чем начать раскрашивать рисунок, Боян хочет узнать, сколькими способами он может
это сделать. Боян еще маленький и не знает комбинаторику, поэтому он попросил вас о помощи.
Формат входных данных
Ввод содержит два целых числа: номер картинки n (1 ⩽ n ⩽ 8) и k (1 ⩽ k ⩽ 1000)
Формат выходных данных
Выведите количество способов, которыми Боян может раскрасить n-ю картинку в k цветов. Два
способа считаются различными, если они отличаются по цвету хотя бы одной области.
Примеры
стандартный ввод
2 2
5 3
7 3
стандартный вывод
0
12
96
Замечание
Вы можете найти раскраску с пронумерованными картинками на следующей странице (серую
область раскрашивать не нужно).
Страница 3 из 4
Кружок олимпиадного программирования
Университет ИТМО, 4 сентября 2015
Страница 4 из 4
Download