Loading Now

queueForShower

Có một danh sách sinh viên ở trong ký túc xá và đứng trong một hàng đợi để tắm. Mỗi sinh viên cần chính xác ki phút trong phòng tắm. Và thi thoảng phòng tắm của bạn mất nước từ timetableij đến timetableij+1 tính bằng phút. Và không sinh viên nào muốn mình đang tắm thì bị mất nước nên họ sẽ nhường cho người gần nhất tiếp theo trong hàng đợi. Nhiệm vụ của bạn là tìm ra thời gian tối thiểu để toàn bộ số sinh viên tắm xong. Thời gian bắt đầu là 0.

Example:

For students=[4, 10, 7, 3] and timetable=[[10, 15], [22, 25]], the output should be queueForShower(students, timetable) = 35.

0:00. Student 1 tắm đầu tiên

4:00. Student 1 tắm xong, nhưng Student 2 không đủ thời gian tiếp theo Student 3 cũng không đủ thời gian. Nên  nhường Student 4 tắm trước.

7:00. Student 4 tắm xong và còn 3 phút trước khi mất nước. Nên students 23 vẫn phải chờ.

15:00. Student 2 vẫn không đủ thời gian để tắm,bởi vì thời gian chỉ có 7 phút cho lân mất nước tiếp theo. Vì vậy student 3 được tắm trước.

22:00. Student 3 tắm xong

22:00-25:00. Nước bị tắt không đủ time cho Student  2 tắm.

25:00. Cuối cùng Student 2 có đủ thời gian để tắm.

35:00. Student 2 tắm xong.  Tấ cả Students  tắm xong.

Input/Output:

  • [execution time limit] 0.5 seconds 

  • [input] array.integer students

    Hàng đợi tắm của Student. Giá trị student[i] trong hàng đợi là thời gian tắm của student[i]

1 ≤ students.length ≤ 1000,
1 ≤ students[i] ≤ 1000.

  • [input] array.array.integer timetable

    Thời gian tắt nước. Mảng chứa các khoảng thời gian [a, b), trong đó nước bị tắt và không ai có thể tắm.

    0 ≤ timetable.length ≤ 1000,
    timetable[i].length = 2,
    1 ≤ timetable[i][0] < timetable[i][1] < timetable[i+1][0] < timetable[i+1][1] ≤ 109.

  • [output] integer 64

    Thời gian ít nhất tính bằng phút mà tất cả Student tắm xong.

Post Comment

Contact