Как рассчитать общую продолжительность перекрывающихся временных интервалов

Этот код подходит для нескольких раз, отсортированных только в порядке возрастания!

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

Я пытаюсь написать кусок кода, который будет вычислять общую продолжительность заданного времени выполнения заданий, где w задач могут быть выполнены в любой момент времени. Если выполняются две задачи, и одна из них завершается, другая немедленно запускается.

Чтобы дать некоторый контекст, времена находятся в отсортированном массиве как ниже;

int times[] = {2,2,3,4}; //short array for example

int n = sizeof(times) / sizeof(times[0]);
int w = 2;  //number of tasks that can be done simultatenously
int total_time = 0;

Метод, который я использую, заключается в суммировании всех wth раз в массиве. Так что в этом примере общее время должно быть вторым и четвертым значениями (2 + 4). Для этого я запускаю цикл for.

int main()
{
for (int i = n-1; i >= 0; i -= w)
{
//std::cout << "At index " << i << " is value " << myarray[i] << endl;
total_time += myarray[i];

}
std::cout << total_time << endl;
std::cin.get();
}

Если w = 3, то результат должен быть таким же в этом примере

Когда w> n, тогда я просто возвращаю последнее значение, поскольку, если все задачи выполняются одновременно, длительность будет просто наибольшим значением в массиве. Я думаю, что мой метод не работает, поскольку он дает неправильные результаты для некоторых массивов.
Кто-нибудь может увидеть, где я иду не так?

редактировать: люди попросили пример, где это идет не так

int times[]{
125,
500,
1000,
2500,
5000,
10000,
15625,
25000,
50000,
62500,
78125,
78125,
100000,
125000,
156250,
500000,
781250,
5000000,
6250000,
6250000
};

w = 5;
int n = sizeof(times) / sizeof(times[0]);

Для этого ответ 6515625. Я получаю 6473750. Либо я упускаю что-то действительно очевидное, либо тестовый случай не верен (в чем я сомневаюсь)

Значения теста не были отсортированы. Сортировка рушит ответ

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector