Форум » Массивы, сортировка, работа с файлами » задача 117 » Ответить

задача 117

fgm: Авторское решение: [pre2] with open('26-117.txt') as F: K, N = map( int, F.readline().split() ) data = [ tuple(map(int, F.readline().split())) for i in range(N) ] data.sort() freeTime = [0]*K # время готовности maxWait = 0 lastRoom = -1 for tStart, tEnd in data: k = 0 for i in range(1, K): if freeTime[ i] <= freeTime[k]: k = i maxWait = max( freeTime[k] - tStart, maxWait ) if freeTime[k] <= tEnd and freeTime[k] < 7*24*60: print( tStart, tEnd, '->', k+1, max(0,freeTime[k] - tStart) ) freeTime[k] = max( freeTime[k], tEnd ) + 31 lastRoom = k + 1 print( maxWait, lastRoom )[/pre2] Но тогда максимальное время ожидания обновляется без проверки того, что номер может освободится уже после того, как клиент уедет. Но тогда его время ожидания длится даже тогда, когда клиент уже уехал. Если же считать временем ожидания только время, по окончании которого клиент обязательно заезжает в номер, то ответ поменяется, максимальное время ожидания окажется равным 79: [pre2] with open('26-117.txt') as F: K, N = map( int, F.readline().split() ) data = [ tuple(map(int, F.readline().split())) for i in range(N) ] data.sort() freeTime = [0]*K # время готовности maxWait = 0 lastRoom = -1 for tStart, tEnd in data: k = 0 for i in range(1, K): if freeTime[ i] <= freeTime[k]: k = i if freeTime[k] <= tEnd and freeTime[k] < 7*24*60: print( tStart, tEnd, '->', k+1, max(0,freeTime[k] - tStart) ) maxWait = max( freeTime[k] - tStart, maxWait ) freeTime[k] = max( freeTime[k], tEnd ) + 31 lastRoom = k + 1 print( maxWait, lastRoom )[/pre2] Что есть правильно? И где ошибка? Помогите!

Ответов - 1

Поляков: Спасибо, вы правы. Условие уточнено, ответ и решение заменены.



полная версия страницы