Puedes hacerlo en O(l+k log l) tiempo y O(l) espacio extra de la siguiente manera:
- Cree un montón binario con una entrada para cada una de las matrices. La llave de entradai es el elemento más pequeño de la matriz Ai. Esto tomaO(l) hora.
- Seleccione la entrada más pequeña del montón y elimínela (tomando O(log l) hora). Agregue esa entrada al montón utilizando la siguiente entrada más pequeña en la matriz relevante como clave (nuevamenteO(log l) hora).
- Haz el paso anterior kveces. El último elemento que eliminas del montón es tu respuesta.
Si reemplaza el montón binario con un montón de Fibonacci, creo que esto lo lleva a amortizar O(l+k) tiempo, pero en la práctica será más lento que el montón binario a menos que l es enorme.
Sospecho que el límite del montón de Fibonacci es óptimo, porque intuitivamente tendrá que inspeccionar al menos k elementos para encontrar el kel más pequeño, y tendrá que inspeccionar al menos un elemento de cada l matrices ya que no sabes cómo están ordenadas, lo que inmediatamente da un límite inferior de Ω(max(k,l))=Ω(k+l).