Задача #1501

Процессы

Уровень ЕГЭ

(М. Ишимов) В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса(-ов) A, если для выполнения процесса B необходимы результаты выполнения хотя бы одного из процессов A. В этом случае процессы могут выполняться только последовательно.

Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы – время его выполнения в миллисекундах, в третьем столбце перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс является независимым, то в таблице указано значение 0.

Типовой пример организации данных в файле:

ID процесса B Время выполнения процесса B (мс) ID процесса(-ов) A
1 4 0
2 3 0
3 1 1; 2
4 7 3

Определите максимальное количество процессов, которое может быть выполнено за первые 2500 мс, при условии, что все независимые друг от друга процессы могут выполняться параллельно.

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.

Файлы к задаче

Ответ
Войдите, чтобы история ответов и статистика сохранялись.
Решение Нажми, чтобы открыть

Ответ

16

Видео по задаче

d = {'0': 0}
data = [s.split(';') for s in open('22.csv')]
while len(d) != len(data) + 1:
for s in data:
if all(sub in d for sub in s[2:]):
d[s[0]] = int(s[1]) + min(d[sub] for sub in s[2:])
del d['0']
print(sum(1 for el in d if d[el] <= 2500))
Быстрый переход
Перейти к задаче