Advertisement
nq1s788

26 багажи ячейки

May 14th, 2025
567
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.98 KB | None | 0 0
  1. В аэропорту есть камера хранения из К ячеек, которые пронумерованы с 1. Принимаемый багаж кладется в свободную ячейку с минимальным номером. Известно время, когда пассажиры сдают и забирают багаж (в минутах с начала суток). Ячейка доступна для багажа, начиная со следующей минуты, после окончания срока хранения. Если свободных ячеек не находится, то багаж не принимается в камеру хранения.
  2.  
  3. Найдите количество багажа, которое будет сдано в камеры за 24 часа и номер ячейки, в которую сдаст багаж последний пассажир.
  4.  
  5. Входные данные
  6.  
  7. В первой строке входного файла находится число К — количество ячеек в камере хранения, во второй строке файла число М — количество пассажиров, сдающих
  8.  
  9. багаж (натуральное число, не превышающее 1000). Каждая из следующих № строк содержит два натуральных числа, не превышающих 1440: время сдачи багажа
  10.  
  11. и время выдачи багажа.
  12.  
  13. Выходные данные
  14.  
  15. Программа должна вывести два числа: количество сданных в камеру хранения багажа и номер ячейки, в которую примут багаж у последнего пассажира, который сможет сдать багаж
  16.  
  17. Типовой пример организации данных:
  18.  
  19. 2
  20.  
  21. 5
  22.  
  23. 30 60
  24.  
  25. 40 60
  26.  
  27. 50 1110
  28.  
  29. 61 1010
  30.  
  31. 1100 1440
  32.  
  33. Для указанного примера багаж смогут сдать первый, второй, четвёртый и пятый пассажир. Последний пассажир сдаст свой багаж в ячейку один, так как к этому моменту первая и вторая ячейка будут свободны.
  34.  
  35. #####################################################
  36.  
  37. data = open('26.txt').readlines()
  38. k = int(data[0])
  39. m = int(data[1])
  40. a = []
  41. for i in range(2, len(data)):
  42.     l, r = map(int, data[i].split())
  43.     a.append((l, 0, i - 2))
  44.     a.append((r, 1, i - 2))
  45. is_taken = [0] * k
  46. num = [-1] * m
  47. a.sort()
  48. lst = -1
  49. cnt = 0
  50. for e in a:
  51.     if e[1] == 0:
  52.         if 0 in is_taken:
  53.             x = is_taken.index(0)
  54.             is_taken[x] = 1
  55.             num[e[2]] = x
  56.             lst = x + 1
  57.             cnt += 1
  58.     else:
  59.         if num[e[2]] != -1:
  60.             is_taken[num[e[2]]] = 0
  61.             num[e[2]] = -1
  62. print(cnt, lst)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement