Menu
CoddyTech

Book Allocation Problem

Uma estante contém livros em uma ordem fixa, e pages[i] é o número de páginas do livro i. Distribua os livros entre students estudantes: cada estudante recebe uma sequência contínua de livros vizinhos, pelo menos um livro cada, e cada livro vai para exatamente um estudante. A carga de um estudante é o total de páginas que ele recebe.

Retorne o menor valor possível da carga mais pesada. Se houver mais estudantes do que livros, retorne -1.

Função

allocateBooks(pages: integer-array, students: integer) → integer
pagesinteger-array
a quantidade de páginas de cada livro, na ordem da estante
studentsinteger
o número de estudantes que compartilham os livros
Retornainteger
a menor carga máxima possível, ou -1 quando há mais estudantes do que livros

Restrições

  • 1 ≤ pages.length ≤ 5000
  • 1 ≤ pages[i] ≤ 105
  • 1 ≤ students ≤ 104
  • Retorne -1 quando students > pages.length.

Exemplos

Entrada
pages = [25, 40, 15, 30, 50]students = 3
Saída
65
Explicação
Distribua [25, 40], [15, 30] e [50]: cargas de 65, 45 e 50. Um limite de 64 falha: a distribuição resulta em [25], [40, 15], [30], [50], quatro estudantes.
challenge icon

Para ir além

Prove que a quantidade média de livros por prateleira, arredondada para cima, somada ao livro mais grosso é sempre um limite funcional. Quantas verificações esse limite superior economiza em uma estante de livros finos?

Redefinir código
def allocateBooks(pages, students):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

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

Saída Esperada

65