406794: GYM102558 A День рождения Васи

Memory Limit:0 MB Time Limit:0 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

A. День рождения Васиограничение по времени на тест3 секундыограничение по памяти на тест256 мегабайтвводстандартный вводвыводстандартный вывод

Вася и его друзья очень любят вкусно поесть. На свой день рождения каждый обязан удивить других, приготовив новые вкусные и полезные блюда.

Сегодня у Васи день рождения, и он позвал своих друзей отведать $$$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$$$ рубля.

加入题单

上一题 下一题 算法标签: