Menu
CoddyTech

Book Allocation Problem

על מדף מונחים ספרים בסדר קבוע, ו־pages[i] הוא מספר העמודים בספר i. חלקו את הספרים בין students תלמידים: כל תלמיד יקבל רצף אחד רציף של ספרים סמוכים, לפחות ספר אחד לכל תלמיד, וכל ספר יינתן לתלמיד אחד בדיוק. העומס של תלמיד הוא המספר הכולל של העמודים שהוא מקבל.

החזירו את הערך הקטן ביותר האפשרי של העומס הכבד ביותר. אם יש יותר תלמידים מספרים, החזירו -1.

פונקציה

allocateBooks(pages: integer-array, students: integer) → integer
pagesinteger-array
מספר העמודים של כל ספר, לפי הסדר על המדף
studentsinteger
מספר התלמידים שחולקים את הספרים
מחזירהinteger
העומס המרבי המינימלי האפשרי, או -1 כשיש יותר תלמידים מספרים

אילוצים

  • 1 ≤ pages.length ≤ 5000
  • 1 ≤ pages[i] ≤ 105
  • 1 ≤ students ≤ 104
  • החזר -1 כאשר students > pages.length.

דוגמאות

קלט
pages = [25, 40, 15, 30, 50]students = 3
פלט
65
הסבר
חלק את [25, 40], את [15, 30] ואת [50]: העומסים הם 65, 45 ו־50. מגבלה של 64 נכשלת: החלוקה נותנת [25], [40, 15], [30], [50] — ארבעה תלמידים.
challenge icon

שאלת המשך

הוכיחו שהממוצע של מספר הספרים בחלוקה בין המדפים, בעיגול כלפי מעלה, בתוספת הספר העבה ביותר, הוא תמיד גבול שעובד. כמה בדיקות חוסך הגבול העליון הזה במדף של ספרים דקים?

איפוס הקוד
def allocateBooks(pages, students):
    # כתבו כאן את הקוד

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

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

הפלט הצפוי

65