Menu
CoddyTech

Book Allocation Problem

Un estante contiene libros en un orden fijo, y pages[i] es el número de páginas del libro i. Reparte los libros entre students estudiantes: cada estudiante recibe un tramo continuo de libros contiguos, al menos un libro cada uno, y cada libro se asigna exactamente a un estudiante. La carga de un estudiante es el número total de páginas que recibe.

Devuelve el menor valor posible de la carga más pesada. Si hay más estudiantes que libros, devuelve -1.

Función

allocateBooks(pages: integer-array, students: integer) → integer
pagesinteger-array
la cantidad de páginas de cada libro, en el orden de los estantes
studentsinteger
el número de estudiantes que comparten los libros
Devuelveinteger
la carga más pesada posible más pequeña, o -1 cuando hay más estudiantes que libros

Restricciones

  • 1 ≤ pages.length ≤ 5000
  • 1 ≤ pages[i] ≤ 105
  • 1 ≤ students ≤ 104
  • Devuelve -1 cuando students > pages.length.

Ejemplos

Entrada
pages = [25, 40, 15, 30, 50]students = 3
Salida
65
Explicación
Reparte [25, 40], [15, 30] y [50]: las cargas son 65, 45 y 50. Un límite de 64 no funciona: el reparto da [25], [40, 15], [30], [50], cuatro estudiantes.
challenge icon

Para ir más allá

Demuestra que la cuota promedio, redondeada hacia arriba, más el libro más grueso siempre es un límite válido. ¿Cuántas comprobaciones ahorra ese límite superior en un estante de libros delgados?

Restablecer código
def allocateBooks(pages, students):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

pages = [25, 40, 15, 30, 50]
students = 3

Salida Esperada

65