Advertisement
Guest User

Untitled

a guest
Oct 26th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.77 KB | None | 0 0
  1. '''
  2. Задача 1:
  3.  
  4. В гонках «Формулы N» участвует N машин. В результате квалификационного заезда
  5. машины получили порядковые номера и стартовали в порядке от 1 до N.
  6.  
  7. Вася — страстный поклонник гонок, но у него в общежитии плохой интернет
  8. и он не может смотреть видео-трансляцию. Поэтому он вынужден читать
  9.  текстовую трансляцию, в которой все сообщения имеют
  10.  вид «Машина номер X обогнала машину номер Y».
  11.  
  12. Вася ненадолго отвлекся и перестал понимать текущий
  13. порядок машин на трассе. Помогите ему понять,
  14.  в каком порядке расположены машины по известным
  15.   сообщениям с начала текстовой трансляции.
  16.  
  17. Формат ввода
  18.  
  19. В первой строке заданы два натуральных числа N и M (1 ≤ N, M ≤ 100000)
  20. — количество машин и сообщений об обгоне соответственно.
  21.  
  22. В следующих M строках содержатся описание сообщений об обгоне:
  23. пары чисел X и Y (1 ≤ X, Y ≤ N) — машина X обогнала машину Y.
  24.  Гарантируется, что машина Y ехала непосредственно
  25.   перед машиной X на момент сообщения.
  26.  
  27. Формат вывода
  28.  
  29. Выведите N чисел — порядок, в котором находятся машины после
  30. обработки всех сообщений.
  31. '''
  32.  
  33. line = '' # переменная для чтения строки файла
  34. n = 0 # количество машин
  35. m = 0 # количество строк с сообщениями об обгоне
  36. l = [] # массив кортежей с сообщениями об обгоне [(x,y), (x,y) ...]
  37. order = [] # порядок машин в гонке [1,2,3,4,...]
  38. x = 0 # номер машины, совершившей обгон
  39. y = 0 # номер машины, которую обогнали
  40.  
  41. '''
  42. # пример входных данных
  43. input.txt
  44. 4 5
  45. 3 4
  46. 2 1
  47. 3 1
  48. 3 2
  49. 1 2
  50.  
  51. '''
  52.  
  53. # открытие файла с входными данными input.txt
  54. with open('input.txt', 'r', encoding='utf-8') as f:
  55.     # чтение первой строки
  56.     line = f.readline()
  57.     # получение значений n и m
  58.     n = int(line.split(' ')[0])
  59.     m = int(line.split(' ')[1])
  60.  
  61.     # чтение m строк и заполнение массива с сообщениями
  62.     for i in range(m):
  63.         line = f.readline()
  64.         l.append((int(line.split(' ')[0]), int(line.split(' ')[1])))
  65.  
  66. # установка начального порядка машин в гонке [1,2,3,4,...]
  67. for i in range(1, n + 1):
  68.     order.append(i)
  69.  
  70. # обработка сообщений об обгоне
  71. for i in range(m):
  72.     x = l[i][0] # получаем номер обогнавшей машины
  73.     y = l[i][1] # получаем номер машине, которую обогнали
  74.  
  75.     # если машины ехали в правильном порядке
  76.     if order.index(x) - order.index(y) == 1:
  77.         # то меняем их местами в порядке машин
  78.         order[order.index(x)], order[order.index(y)] = order[order.index(y)], order[order.index(x)]
  79.  
  80. # выводим итоговый порядок машин
  81. print(order)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement