10877. Поїдання сиру
На сирному заводі у Флатландії мешкають миші. Вони дуже люблять сир і часто знищують запаси сиру, які приготовані для відправки в магазин.
Усього на заводі живе \(𝑚\) мишей. Для \(𝑖\)-ї миші відома її швидкість поїдання сиру \(𝑠_𝑖\), миша може з'їсти \(𝑠_𝑖\) грам сиру на годину.
Нещодавно мишам став відомим план роботи заводу найближчим часом. Планується виготовити \(n\) головок сиру. Про кожну головку відомі \(𝑟_𝑖\) до початку якої години вона буде виготовлена, \(𝑑_𝑖\) на початку якої години вона почне псуватись, і \(𝑝_𝑖\) вага головки сиру в грамах.
Миші вирішили з'їсти весь сир. У будь-який момент часу кожна миша може їсти певну головку сиру. Миші істоти гидливі, і ту саму головку сиру не можуть їсти одночасно кілька мишей. При цьому в будь-який момент часу миша може вирішити припинити їсти головку сиру і взятися за іншу, в тому числі ту, яку раніше їла інша миша.
Миші не люблять їсти сир після того, як він почав псуватися. Але залишати сир недоїденими миші не можуть. Вони вирішили організувати поїдання сиру таким чином, щоб величина \(𝑡 \), така, що якусь головку все ще продовжують їсти через \(𝑡\) годин після того, як вона почала псуватися, була мінімальна. Допоможіть мишам з'ясувати, як це зробити.
Коментар до тестів
У першому прикладі мишам слід організувати поїдання сиру в такий спосіб. Спочатку перша миша починає їсти першу головку сиру. Коли з'являється друга, вона перестає їсти першу і починає їсти другу (у цей момент від першої залишилося 9 грамів). Друга миша приймається їсти першу головку сиру. Через 2.5 години перша миша доїдає другу головку сиру (на 0.5 години пізніше, ніж вона почала псуватися) і знову починає їсти першу (друга миша за цей час з'їла ще 5 грамів від першої головки і від неї залишилося 4 грами). Таким чином ще за годину перша миша доїдає першу головку, також на 0.5 години пізніше, ніж вона почала псуватися.
У другому прикладі миша встигає з'їсти сир до того, як він починає псуватися
Формат вхідних даних
Перший рядок вхідного файлу містить два цілих числа \(𝑛\) і \(𝑚\) (\(1≤𝑛≤30\) , \(1≤𝑚≤30 \)).
Наступні \(𝑛\) рядків містить по три цілих числа: \(𝑝_𝑖 , 𝑟_𝑖, 𝑑_𝑖\) (\(1≤𝑝_𝑖≤10^5\) , \(0≤𝑟_𝑖<𝑑𝑖≤10^7\) ).
Далі йдуть \(m\) рядків, кожен з яких містить по одному цілому числу \(𝑠_𝑗\) (\(1≤𝑠_𝑗≤10^5 \)).
Формат вихідних даних
Виведіть одне дійсне число - шукане мінімальне \(𝑡 \). Ваша відповідь повинна відрізнятися від правильної не більше ніж на \(10^{-4}\).
Приклад вхідних даних
2 2
13 0 4
10 1 3
4
2
Приклад вихідних даних
0.5
Приклад вхідних даних
1 1
1 0 1
1
Приклад вихідних даних
0.0
Коментарі