Некоторые алгоритмы сортировки сохраняют относительный порядок элементов, у которых совпадают ключи для сортировки. В таких случаях мы говорим, что алгоритм выполняет стабильную сортировку.
Представьте, что мы записали числа в массиве вместе с их начальными индексами, чтобы после сортировки можно было проследить, как каждый элемент сместился.
Исходный массив
(10, 0)
(12, 1)
(10, 2)
(7, 3)
(-3, 4)
(-3, 5)
(7, 6)
Стабильная сортировка
(-3, 4)
(-3, 5)
(7, 3)
(7, 6)
(10, 0)
(10, 2)
(12, 1)
Нестабильная сортировка
(-3, 5)
(-3, 4)
(7, 3)
(7, 6)
(10, 2)
(10, 0)
(12, 1)
При стабильной сортировке алгоритм сохраняет исходный порядок для равных по значению элементов. Однако при нестабильной сортировке этот порядок может меняться.
Задача
Пусть дан исходный массив из n целых чисел и n индексов . Необходимо сформировать новый массив, следуя порядку, заданному этими индексами: первый элемент нового массива будет , второй — и так далее.
Нужно проверить, является ли полученный массив результатом стабильной сортировки исходного массива.
Входные данные
В первой строке входного файла содержится одно целое число n (1 ≤ n ≤ ).
Во второй строке записаны n целых чисел ( ≤ ≤ ).
В третьей строке содержатся n целых чисел (0 ≤ < n).
Выходные данные
Программа должна вывести Yes, если порядок индексов действительно соответствует результату стабильной сортировки массива , и No — в противном случае.