406794: GYM102558 A День рождения Васи
Description
Вася и его друзья очень любят вкусно поесть. На свой день рождения каждый обязан удивить других, приготовив новые вкусные и полезные блюда.
Сегодня у Васи день рождения, и он позвал своих друзей отведать $$$n$$$ своих самых лучших блюд. Название каждого из них состоит из строчных букв английского алфавита, цифр и знака подчёркивания.
Для приготовления блюда с номером $$$i$$$ требуется $$$z_i$$$ ингредиентов. Для каждого ингредиента известно его название, требуемое количество для одной порции блюда, а также единица измерения, в которой это количество задано. Помимо этого, Васе известно, что $$$i$$$-й кулинарный шедевр захотят попробовать $$$c_i$$$ друзей.
Используются следующие единицы измерения:
- g, kg – граммы и килограммы соответственно;
- l, ml – литры и миллилитры соответственно;
- cnt, tens – одна штука и десять штук соответственно.
В одном килограмме $$$1000$$$ грамм и в одном литре $$$1000$$$ миллилитров. Делать перевод из одной единицы измерения в другую можно тогда и только тогда, когда они одновременно обозначают или массу, или объём, или количество.
У Васи есть два справочника ингредиентов. В первом для каждого ингредиента указано его количество в упаковке и цена за упаковку. Во втором справочнике для каждого ингредиента указано содержание белков, жиров, углеводов и энергетическая ценность некоторого количества данного ингредиента.
Васе нужно приготовить все блюда, при этом не купить ничего лишнего. Для этого ему нужно определить, какие ингредиенты и в каком количестве необходимо приобрести в магазине.
Так как друзья именинника очень следят за питанием, то они, перед тем как попробовать Васины блюда, захотят узнать всё: как Вася готовил блюда, их энергетическую ценность и содержание белков, жиров и углеводов. Васе нужно подготовить эту информацию.
Необходимо помочь имениннику подсчитать, сколько требуется потратить денег на покупку продуктов в магазине, какие ингредиенты и в каком количестве нужно купить, а также для каждого блюда посчитать содержание белков, жиров, углеводов и энергетическую ценность, если его съесть полностью.
Входные данныеПервая строка содержит целое число $$$n$$$ ($$$1 \leqslant n \leqslant 1000$$$) — количество блюд, которое решил приготовить Вася.
Затем следует описание $$$n$$$ блюд. В первой строке содержатся строка $$$d_i$$$ и целые числа $$$c_i$$$, $$$z_i$$$ ($$$1 \leqslant c_i, z_i \leqslant 100$$$) — название блюда, количество друзей, желающих отведать данное блюдо, и количество ингредиентов необходимых для приготовления. Название блюда состоит из строчных букв английского алфавита, цифр и знака подчёркивания. Его длина не превосходит $$$20$$$ символов.
В следующих $$$z_i$$$ строках содержатся описания ингредиентов. В строке с номером $$$j$$$ содержатся строка $$$s_{i, j}$$$ — название ингредиента, целое число $$$a_{i, j}$$$ ($$$1 \leqslant \text{a}_{i, j} \leqslant 1000$$$) — требуемое количество ингредиента и строка $$$\text{u}_{i, j}$$$ — название единицы измерения количества. Название ингредиента состоит из строчных букв английского алфавита, цифр и знака подчёркивания. Длина строки не превосходит $$$20$$$ символов.
Следующая строка содержит целое число $$$k$$$ ($$$1 \leqslant k \leqslant 1000$$$) — количество ингредиентов в каталоге цен.
В каждой из следующих $$$k$$$ строк, содержатся четыре значения $$$t_i\,p_i\,a_i\,u_i$$$, описывающих ингредиент.
- $$$t_i$$$ — название ингредиента, состоящее из строчных букв английского алфавита, цифр и знака подчёркивания. Длина строки не превосходит $$$20$$$ символов;
- $$$p_i$$$ — стоимость ингредиента, заданная целым числом ($$$1 \leqslant p_i \leqslant 1000$$$);
- $$$a_i$$$ — количество ингредиента в упаковке в единицах, заданное целым числом ($$$1 \leqslant a_i \leqslant 1000$$$);
- $$$u_i$$$ — единица измерения количества (l, ml, g, kg, cnt или tens);
Следующая строка содержит число $$$m$$$ ($$$1 \leqslant m \leqslant 1000$$$) — количество ингредиентов в каталоге еды.
Далее расположены $$$m$$$ строк, в каждой из которой содержится семь значений $$$t_i\,a_i\,u_i\,pr_i\,f_i\,ch_i\,fv_i$$$, описывающих ингредиент.
- $$$t_i$$$ — название ингредиента, состоящее из строчных букв английского алфавита, цифр и знака подчёркивания. Длина строки не превосходит $$$20$$$ символов;
- $$$a_i$$$ — количество ингредиента, для которого указаны характеристики ингредиента, заданное целым числом ($$$1 \leqslant a_i \leqslant 1000$$$);
- $$$u_i$$$ — единица измерения (l, ml, g, kg, cnt или tens);
- $$$pr_i$$$, $$$f_i$$$, $$$ch_i$$$, $$$fv_i$$$ — содержание белков, жиров, углеводов и энергетическая ценность ингредиента, соответственно, заданные вещественными числами с не более чем шестью знаками после запятой ($$$0 \leqslant pr_i, f_i, ch_i \leqslant 1000, 0 \leqslant fv_i \leqslant 10000$$$).
Гарантируется, что:
- в каталогах перечислены все ингредиенты, необходимые для приготовления блюд;
- не существует двух блюд с одинаковым названием;
- не существует двух ингредиентов в одном каталоге с одинаковым названием;
- не существует двух ингредиентов в одном блюде с одинаковым названием;
- для любых двух упоминаний ингредиента единицы измерения, в которых заданы его количества, можно перевести друг в друга.
Первая строка должна содержать одно целое число: сумма, которую нужно потратить Васе на подготовку к празднику.
Далее должны следовать $$$k$$$ строк, в каждой из которых через пробел указано название ингредиента и целое число — количество упаковок, которое необходимо купить. Ингредиенты, выведенные в этих $$$k$$$ строках должны соответствовать ингредиентам, описанным в первом справочнике.
В следующих $$$n$$$ строках через пробел должны быть указаны название блюда и его характеристики, описанные четырьмя вещественными числами: белки, жиры, углеводы и энергетическая ценность.
Ингредиенты и блюда разрешается выводить в любом порядке.
Ваш ответ будет считаться правильным, если все целые числа совпадают с соответствующими числами в ответе жюри, а для всех вещественных чисел в ответе их абсолютная или относительная погрешность не превосходит $$$10^{-3}$$$. Более формально, пусть вещественное число в вашем ответе равно $$$A$$$, а соответствующее число в ответе жюри равно $$$B$$$. Тогда число $$$A$$$ будет считаться корректным, если $$$\frac{|A-B|}{\max(1,B)} \leq 10^{-3}$$$.
ПримерВходные данные2 sandwich 7 3 butter 10 g toasted_bread 2 cnt sausage 30 g omelet 9 4 egg 4 cnt milk 120 ml salt 1 g sausage 50 g 7 egg 61 1 tens milk 58 1 l sausage 100 480 g butter 120 180 g cream 100 350 g salt 14 1000 g toasted_bread 40 20 cnt 8 egg 1 cnt 13 12 1 16.4 milk 1 l 3 4.5 4.7 60 chocolate 90 g 6.8 36.3 47.1 546 salt 1 kg 0 0 0 0 strawberry 100 g 0.4 0.1 7 35 sausage 100 g 10 18 1.5 210 toasted_bread 5 cnt 7.3 1.6 52.3 248 butter 100 g 0.8 72.5 1.3 661Выходные данные
734 egg 4 milk 2 sausage 2 butter 1 cream 0 salt 1 toasted_bread 1 sandwich 6.00 13.29 21.50 228.3 omelet 57.360 57.540 5.314 177.800Примечание
В первом примере Васе необходимо приготовить $$$7$$$ бутербродов и $$$9$$$ омлетов.
Для приготовления всех первых блюд необходимо $$$10 \cdot 7$$$ грамм масла, $$$2 \cdot 7$$$ кусочков хлеба и $$$30 \cdot 7$$$ грамм колбасы. В каждом из бутерброде будет содержаться $$$0.8 \cdot \frac{10}{100} + 7.3 \cdot \frac{2}{5} + 10 \cdot \frac{30}{100} = 6$$$ грамм белков, $$$72.5 \cdot \frac{10}{100} + 1.6 \cdot \frac{2}{5} + 18 \cdot \frac{30}{100} = 13.29$$$ грамм жиров и $$$1.3 \cdot \frac{10}{100} + 52.3 \cdot \frac{2}{5} + 1.5 \cdot \frac{30}{100} = 21.5$$$ грамм углеводов. Энергетическая ценность составит $$$661 \cdot \frac{10}{100} + 248 \cdot \frac{2}{5} + 210 \cdot \frac{30}{100} = 228.3$$$ ккал.
Для приготовления всех вторых блюд необходимо $$$4 \cdot 9 = 36$$$ яиц, $$$120 \cdot 9 = 1080$$$ миллилитров молока, $$$9$$$ грамм соли, $$$50 \cdot 9 = 450$$$ грамм колбасы. В каждом омлете будет содержаться $$$13 \cdot 4 + 3 \cdot \frac{120}{1000} + 10 \cdot \frac{50}{100} = 57.36$$$ грамм белков, $$$12 \cdot 4 + 4.5 \cdot \frac{120}{1000} + 18 \cdot \frac{50}{100} = 57.54$$$ жиров и $$$1 \cdot 4 + 4.7 \cdot \frac{120}{1000} + 1.5 \cdot \frac{50}{100} = 5.314$$$ углеводов. Энергетическая ценность составит $$$16.4 \cdot 4 + 60 \cdot \frac{120}{1000} + 210 \cdot \frac{50}{100} = 177.8$$$ ккал.
Всего необходимо $$$70$$$ грамм масла, $$$36$$$ яиц, $$$1080$$$ литров молока, $$$9$$$ грамм соли, $$$210 + 450 = 660$$$ грамм колбасы и $$$14$$$ кусочков тостового хлеба.
Таким образом, в магазине нужно купить одну упаковку масла, $$$4$$$ десятка яиц, $$$2$$$ упаковки колбасы и молока, по одной упаковке соли и тостового хлеба, заплатив $$$120 + 61 \cdot 4 + 100 \cdot 2 + 58 \cdot 2 + 14 + 40 = 734$$$ рубля.