await Task.WhenAll(tasks) запускает группу задач вместе и продолжает выполнение, когда завершится самая медленная из них. Поэтому программа, которая ожидает несколько групп одну за другой, тратит сумму времен самой медленной задачи в каждой группе.
Реализуйте when_all_total_time(groups), где groups[i] содержит длительности задач в группе i.
Input
groups: Группы, которые ожидаются по порядку. Пустая группа завершается немедленно.
Output
Верните общее время.
Ограничения
0 ≤ число групп ≤ 10,000
0 ≤ задач в группе ≤ 1,000; 0 ≤ длительность ≤ 10^6
Примеры
Ввод:
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.
Ввод:
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. Следуйте условию и ограничениям выше.