Все задачи №22
№22

Через сколько закончится всё

Таблица процессов: ID, время (мс), зависимости через «;» (0 — нет). Процесс стартует сразу после окончания самого позднего из тех, от кого зависит. Нумерация мс с 1. Найди минимальное время, через которое завершится выполнение всей совокупности процессов, если независимые процессы идут параллельно.

Источник: ФИПИ, № 29352

Скачать файл: task_29352_A.ods. Решай в Excel или LibreOffice.

Ответвпиши то, что получилось
Показать разбор
  1. Открой файл. Раздели третий столбец по «;» на отдельные столбцы: Данные → Текст по столбцам, разделитель «;». Пустые ячейки зависимостей заполни нулём.
  2. Вставь над процессами строку с ID 0 и нулями во всех столбцах. Тогда ВПР на зависимость 0 вернёт конец 0, а не ошибку.
  3. Добавь столбцы «начало» и «конец». В начале напиши =МАКС(ВПР(зав1;таблица;столбец_конца;0);ВПР(зав2;таблица;столбец_конца;0);…) по одному ВПР на каждый столбец зависимостей. Таблицу закрепи через $, последний аргумент ВПР равен 0.
  4. В конце напиши = начало + время. Протяни обе формулы вниз. Если программа пишет про циклическую ссылку, включи итеративные вычисления в настройках.
  5. Всё закончится, когда закончится самый поздний процесс. Возьми =МАКС(конец) по всему столбцу концов.