Menu
CoddyTech

Book Allocation Problem

Uno scaffale contiene libri in un ordine fisso e pages[i] è il numero di pagine del libro i. Dividi i libri tra students studenti: ogni studente riceve una sequenza contigua di libri adiacenti, almeno un libro ciascuno, e ogni libro viene assegnato esattamente a uno studente. Il carico di uno studente è il numero totale di pagine che riceve.

Restituisci il valore minimo possibile del carico più pesante. Se gli studenti sono più numerosi dei libri, restituisci -1.

Funzione

allocateBooks(pages: integer-array, students: integer) → integer
pagesinteger-array
il numero di pagine di ciascun libro, nell’ordine sullo scaffale
studentsinteger
il numero di studenti che condividono i libri
Restituisceinteger
il più piccolo carico massimo possibile, oppure -1 quando ci sono più studenti che libri

Vincoli

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

Esempi

Input
pages = [25, 40, 15, 30, 50]students = 3
Output
65
Spiegazione
Distribuisci [25, 40], [15, 30] e [50]: i carichi sono 65, 45 e 50. Un limite di 64 non basta: la distribuzione dà [25], [40, 15], [30], [50], quattro studenti.
challenge icon

Per approfondire

Dimostra che la quota media, arrotondata per eccesso, più il libro più spesso è sempre un limite valido. Quanti controlli in meno comporta questo limite superiore su uno scaffale di libri sottili?

Ripristina il codice
def allocateBooks(pages, students):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

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

Output atteso

65