
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 timetable
ij+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 2
và 3
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ủastudent[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