Cómo calcular el tiempo de cálculo general para un proceso de subprocesos múltiples

Tengo un conjunto de tareas, llamémosloT[], donde cada tareaT[i] necesita una cierta cantidad de tiempot(T[i]) para ser procesado Las tareas están siendo procesadas en paralelo porX subprocesos (eso no significa que varios subprocesos estén trabajando conjuntamente en una sola tarea, sino que múltiples subprocesos procesan varias tareas, cada subproceso realiza una tarea, luego la siguiente, etc.).

Ahora quiero calcular el tiempo total esperado que llevará procesar todas las tareas. Es fácil mientrassize(T[]) <= X por supuesto (es decir, el número de tareas es menor o igual que el número de subprocesos), en este caso, el tiempo total es igual al tiempo de la tarea más lenta.

Pero estoy bastante perdido por el casoX < size(T[]) (es decir, tengo menos hilos que tareas). ¿Cómo calcularía eso de una manera elegante?

editar: como lo solicitó un comentarista, podemos suponer que la cola de tareas está ordenada por la tarea de ejecución más larga primero, la tarea de ejecución más corta al final. Además, podemos suponer que no hay pausas entre las tareas, y también podemos descuidar lo que está haciendo el programador del sistema operativo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta