Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Задача 1:
- В гонках «Формулы N» участвует N машин. В результате квалификационного заезда
- машины получили порядковые номера и стартовали в порядке от 1 до N.
- Вася — страстный поклонник гонок, но у него в общежитии плохой интернет
- и он не может смотреть видео-трансляцию. Поэтому он вынужден читать
- текстовую трансляцию, в которой все сообщения имеют
- вид «Машина номер X обогнала машину номер Y».
- Вася ненадолго отвлекся и перестал понимать текущий
- порядок машин на трассе. Помогите ему понять,
- в каком порядке расположены машины по известным
- сообщениям с начала текстовой трансляции.
- Формат ввода
- В первой строке заданы два натуральных числа N и M (1 ≤ N, M ≤ 100000)
- — количество машин и сообщений об обгоне соответственно.
- В следующих M строках содержатся описание сообщений об обгоне:
- пары чисел X и Y (1 ≤ X, Y ≤ N) — машина X обогнала машину Y.
- Гарантируется, что машина Y ехала непосредственно
- перед машиной X на момент сообщения.
- Формат вывода
- Выведите N чисел — порядок, в котором находятся машины после
- обработки всех сообщений.
- '''
- line = '' # переменная для чтения строки файла
- n = 0 # количество машин
- m = 0 # количество строк с сообщениями об обгоне
- l = [] # массив кортежей с сообщениями об обгоне [(x,y), (x,y) ...]
- order = [] # порядок машин в гонке [1,2,3,4,...]
- x = 0 # номер машины, совершившей обгон
- y = 0 # номер машины, которую обогнали
- '''
- # пример входных данных
- input.txt
- 4 5
- 3 4
- 2 1
- 3 1
- 3 2
- 1 2
- '''
- # открытие файла с входными данными input.txt
- with open('input.txt', 'r', encoding='utf-8') as f:
- # чтение первой строки
- line = f.readline()
- # получение значений n и m
- n = int(line.split(' ')[0])
- m = int(line.split(' ')[1])
- # чтение m строк и заполнение массива с сообщениями
- for i in range(m):
- line = f.readline()
- l.append((int(line.split(' ')[0]), int(line.split(' ')[1])))
- # установка начального порядка машин в гонке [1,2,3,4,...]
- for i in range(1, n + 1):
- order.append(i)
- # обработка сообщений об обгоне
- for i in range(m):
- x = l[i][0] # получаем номер обогнавшей машины
- y = l[i][1] # получаем номер машине, которую обогнали
- # если машины ехали в правильном порядке
- if order.index(x) - order.index(y) == 1:
- # то меняем их местами в порядке машин
- order[order.index(x)], order[order.index(y)] = order[order.index(y)], order[order.index(x)]
- # выводим итоговый порядок машин
- print(order)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement