Все задачи
Легко Решено: 0 Процент решений: 0%

Общее время с WhenAll

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

Чему вы научитесь

  • Понимать, что WhenAll ждёт самую медленную задачу
  • Складывать время групп, ожидаемых по очереди
  • Обрабатывать пустые группы

Условие

await Task.WhenAll(tasks) запускает группу задач вместе и продолжает выполнение, когда завершится самая медленная из них. Поэтому программа, которая ожидает несколько групп одну за другой, тратит сумму времен самой медленной задачи в каждой группе.

Реализуйте when_all_total_time(groups), где groups[i] содержит длительности задач в группе i.

Input

groups: Группы, которые ожидаются по порядку. Пустая группа завершается немедленно.

Output

Верните общее время.

Ограничения

0 ≤ число групп ≤ 10,000

0 ≤ задач в группе ≤ 1,000; 0 ≤ длительность ≤ 10^6

Примеры

Пример 1
Ввод:
groups = [
    [3, 1, 2],
    [5],
    [2, 2]
]

Ожидаемый вывод:
expected = 10
Ввод:
std::vector<std::vector<long long>> groups = {
    {3, 1, 2},
    {5},
    {2, 2}
};

Ожидаемый вывод:
long long expected = 10;
Ввод:
long[][] groups = new long[][] {
    new long[] {3, 1, 2},
    new long[] {5},
    new long[] {2, 2}
};

Ожидаемый вывод:
long expected = 10;

Пояснение

Группы занимают столько же времени, сколько их самая медленная задача: 3 + 5 + 2 = 10.

Пример 2
Ввод:
groups = [
    [],
    [4, 7]
]

Ожидаемый вывод:
expected = 7
Ввод:
std::vector<std::vector<long long>> groups = {
    {},
    {4, 7}
};

Ожидаемый вывод:
long long expected = 7;
Ввод:
long[][] groups = new long[][] {
    new long[] {},
    new long[] {4, 7}
};

Ожидаемый вывод:
long expected = 7;

Пояснение

Пустая группа не занимает времени; вторая группа занимает 7.

Как подступиться

Сначала попробуйте сами, затем открывайте подсказки по одной.

Подсказка 1

Группа завершается, когда завершается её самая медленная задача.

Подсказка 2

Группы выполняются друг за другом, поэтому их время складывается.

Подсказка 3

Пустая группа не добавляет времени.

Ожидаемая сложность

время O(общее число задач), доп. память O(1)

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.