Вывести порядок, в котором находятся машины после обработки всех сообщений - Pascal
Формулировка задачи:
В гонках "Формулы N" участвует N машин. В результате квалификационного заезда машины получили порядковые номера и стартовали в порядке от 1 до N.
Вася - страстный поклонник гонок, но у него в общежитии плохой интернет и он не может смотреть видео-трансляцию. Поэтому он вынужден читать текстовую трансляцию, в которой все сообщения имеют вид "Машина номер X обогнала машину номер Y".Вася ненадолго отвлекся и перестал понимать текущий порядок машин на трассе.
Помогите ему понять, в каком порядке расположены машины по известным сообщениям с начала текстовой трансляции.
В первой строке заданы два натуральных числа N и M (1 ≤ N, M ≤ 100000) - количество машин и сообщений об обгоне соответственно.
В следующих M строках содержатся описание сообщений об обгоне: пары чисел X и Y (1 ≤ X, Y ≤ N) - машина X обогнала машину Y. Гарантируется, что машина Y ехала непосредственно перед машиной X на момент сообщения.
Выведите N чисел - порядок, в котором находятся машины после обработки всех сообщений.
Решение задачи: «Вывести порядок, в котором находятся машины после обработки всех сообщений»
textual
Листинг программы
ReadLn(n,m); for i:=1 to n do a[i]:=i; for m:=1 to m do begin ReadLn(x,y); i:=1; while a[i]<>y do Inc(i); {if a[i+1]<>x then begin WriteLn('*** Ошибка данных'); Halt; end;} a[i]:=x; a[i+1]:=y; end; for i:=1 to n do Write(' ',a[i]); WriteLn;
Объяснение кода листинга программы
n
- значение переменнойn
считывается с помощью ReadLnm
- значение переменнойm
считывается с помощью ReadLn- Цикл
for i:=1 to n do a[i]:=i;
- заполняет массивa
значениями от 1 доn
- Цикл
for m:=1 to m do begin
- начало цикла для обработки соответствующего количества сообщений - Считывание значений
x
иy
с помощью ReadLn i:=1; while a[i]<>y do Inc(i);
- находит индексi
в массивеa
, содержащий значениеy
a[i]:=x; a[i+1]:=y;
- изменяет порядок элементов в массивеa
, перемещая элемент с индексомi
перед элемент с индексомi+1
for i:=1 to n do Write(' ',a[i]);
- выводит элементы массиваa
через пробелWriteLn;
- переводит курсор на новую строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д