eolymp
bolt
Try our new interface for solving problems
Problems

Почтовые марки

Почтовые марки

Вы - филателист, и в настоящий момент изучаете серию из \textbf{n} почтовых марок. Каждая из марок этой серии уникальна; какие-то из них уже принадлежат вам, а какие-то вы можете приобрести. Для каждой марки известны её стоимость (сколько долларов вы отдадите за покупку этой марки, или же за сколько долларов вы сможете её продать) и коллекционная ценность (эта величина зависит от ваших субъективных критериев и не имеет отношения к стоимости марки в долларах). Вы можете продавать любые марки этой серии, которые у вас есть, и покупать марки, которых нет. Ваша цель на данном этапе - собрать коллекцию почтовых марок этой серии, суммарная коллекционная ценность которой будет не меньше \textbf{k}. Какое минимальное количество долларов придётся потратить, чтобы этой цели достичь? \InputFile В первой строке входного файла заданы через пробел два целых числа \textbf{n} и \textbf{k} (\textbf{1} ≤ \textbf{n} ≤ \textbf{32}, \textbf{1} ≤ \textbf{k} ≤ \textbf{10^9}). Во второй строке заданы через пробел \textbf{n} целых чисел \textbf{p_1}, \textbf{p_2}, ..., \textbf{p_n} - стоимость почтовых марок. В третьей строке заданы через пробел \textbf{n} целых чисел \textbf{h_1}, \textbf{h_2}, ..., \textbf{h_n}; \textbf{h_i} равно единице, если \textbf{i}-я марка уже находится у вас, и нулю в противном случае. Наконец, в четвёртой строке заданы через пробел \textbf{n} целых чисел \textbf{v_1}, \textbf{v_2}, ..., \textbf{v_n} - коллекционная ценность почтовых марок. \OutputFile В первой строке выходного файла выведите одно число - минимальное количество долларов, которое необходимо потратить, чтобы получить коллекцию марок с суммарной коллекционной ценностью не меньше \textbf{k}. Если можно добиться такой коллекционной ценности, не тратя дополнительных средств или даже заработав на операциях с марками, выведите \textbf{0}. Если же такой коллекционной ценности добиться невозможно при любых дополнительных вложениях, выведите \textbf{-1}.
Time limit 2 seconds
Memory limit 256 MiB
Input example #1
2 13
2 15
0 0
2 21
Output example #1
15
Input example #2
5 67
9 18 7 6 18
1 0 0 0 1
12 27 10 10 25
Output example #2
22
Input example #3
4 10
14 14 12 6
0 1 1 1
19 23 20 7
Output example #3
0
Input example #4
10 811
43 33 14 31 42 37 17 42 40 20
0 0 0 0 0 0 1 0 0 0
116 71 38 77 87 106 48 107 91 41
Output example #4
-1
Author A.Grinenko, I.Kazmenko
Source CollectingPostmarks, TopCoder SRM 415 Round 1 Div1 500