Menu
CoddyTech

Book Allocation Problem

Bir raftaki kitaplar sabit bir sırada durur ve pages[i], i numaralı kitaptaki sayfa sayısını belirtir. Kitapları students öğrenci arasında paylaştır: her öğrenci, yan yana duran kitaplardan oluşan kesintisiz bir grup almalı, herkes en az bir kitap almalı ve her kitap tam olarak bir öğrenciye verilmelidir. Bir öğrencinin yükü, aldığı toplam sayfa sayısıdır.

En ağır yükün mümkün olan en küçük değerini döndür. Öğrenci sayısı kitap sayısından fazlaysa -1 döndür.

Fonksiyon

allocateBooks(pages: integer-array, students: integer) → integer
pagesinteger-array
Raf sırasına göre her kitabın sayfa sayısı
studentsinteger
kitapları paylaşan öğrenci sayısı
Döndürürinteger
mümkün olan en küçük en ağır yük veya öğrenci sayısı kitap sayısından fazlaysa -1

Kısıtlar

  • 1 ≤ pages.length ≤ 5000
  • 1 ≤ pages[i] ≤ 105
  • 1 ≤ students ≤ 104
  • -1 döndürün; students > pages.length olduğunda.

Örnekler

Girdi
pages = [25, 40, 15, 30, 50]students = 3
Çıktı
65
Açıklama
[25, 40], [15, 30] ve [50] dağıt: yükler 65, 45 ve 50. 64'lük bir sınır başarısız olur: dağıtımda [25], [40, 15], [30], [50] olur; dört öğrenci.
challenge icon

Ek soru

Yukarı yuvarlanmış ortalama payın en kalın kitapla toplamının her zaman geçerli bir sınır olduğunu kanıtlayın. İnce kitaplardan oluşan bir rafta bu üst sınır kaç kontrol kazandırır?

Kodu sıfırla
def allocateBooks(pages, students):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

65