def hhmm_to_minute(hhmm):
h,m = hhmm.split(":")
return int(h)*60+int(m)
def minute_to_hhmm(minute):
h,m = divmod(minute,60)
return f"{h:02d}:{m:02d}"
def solution(n, t, m, timetable):
answer = ''
bus_minute_tables=[]
for i in range(n):
for _ in range(m):
bus_minute_tables.append(540+t*i)
bus_minute_tables.sort()
crew_minute_tables = []
for hhmm in timetable:
minute = hhmm_to_minute(hhmm)
crew_minute_tables.append(minute)
crew_minute_tables.sort()
bus_idx = 0
crew_idx = 0
last_enter_minute = 0
while bus_idx < len(bus_minute_tables) and crew_idx < len(crew_minute_tables):
if crew_minute_tables[crew_idx]<=bus_minute_tables[bus_idx]:
last_enter_minute = crew_minute_tables[crew_idx]
bus_idx+=1
crew_idx+=1
else:
bus_idx+=1
if crew_idx == len(crew_minute_tables) and bus_idx < len(bus_minute_tables):
ans_minute = bus_minute_tables[-1]
return minute_to_hhmm(ans_minute)
elif crew_idx == len(crew_minute_tables) and bus_idx == len(bus_minute_tables):
ans_minute = crew_minute_tables[-1] - 1
return minute_to_hhmm(ans_minute)
elif crew_idx < len(crew_minute_tables) and bus_idx == len(bus_minute_tables):
if crew_minute_tables[crew_idx] <= bus_minute_tables[-1]:
ans_minute = last_enter_minute - 1
return minute_to_hhmm(ans_minute)
else:
ans_minute = bus_minute_tables[-1]
return minute_to_hhmm(ans_minute)