Как в ЕГЭ · 11 из 28
№22. Параллельные процессы
По мотивам задания №22. Программа запускает несколько процессов. Каждый длится известное время и может начаться только после того, как закончились все процессы, от которых он зависит. Независимые процессы идут одновременно, и ограничений на их число нет. Спрашивают, через сколько миллисекунд закончится всё.
Что сделать
Посчитайте, через сколько миллисекунд закончатся все процессы, если каждый стартует, как только дождётся своих.
Что приходит
processy— словарь «номер → (длительность, [номера, которых он ждёт])»
Что вернуть
Наименьшее время, к которому закончатся все процессы, числом; процессов нет — 0.
Допишите функцию vremya_vseh в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Процесс 1 длится 4 мс и никого не ждёт, процесс 2 длится 3 мс и ждёт процесс 1, процесс 3 длится 2 мс и никого не ждёт. Третий заканчивается на 2-й мс, первый — на 4-й, второй стартует на 4-й и заканчивается на 7-й: ответ 7.
vremya_vseh({1: (4, []), 2: (3, [1]), 3: (2, [])})
7
Все процессы, от которых кто-то зависит, есть в словаре, и зависимости не образуют кольца. Процесс без зависимостей стартует в момент 0; процесс с зависимостями — в момент, когда закончился последний из тех, кого он ждёт. Закончится он через свою длительность после старта.
Ответ — момент, когда закончится последний процесс.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.