Требуется определить, возможна ли сортировка последовательности чисел с помощью стека.
К тупику со стороны пути 1 (см. рисунок) подъехал поезд. Разрешается отцепить от поезда один или сразу несколько первых вагонов и завезти их в тупик (при желании можно даже завезти в тупик сразу весь поезд). После этого часть вагонов вывезти в сторону пути 2. Потом можно завезти в тупик еще несколько вагонов, и снова часть вагонов транспортировать в сторону пути 2. И так далее, чтобы каждый вагон лишь один раз заехал с пути 1 в тупик, а затем один раз выехал из тупика на путь 2. Заезжать в тупик с пути 2 или выезжать из тупика на путь 1 запрещается. Нельзя с пути 1 попасть на путь 2, не заезжая в тупик.
Известно в каком порядке изначально идут вагоны поезда. Требуется, с помощью указанных операций, сделать так, чтобы вагоны поезда шли по порядку (сначала первый, потом второй и т.д., считая от головы поезда, едущего по пути 2 в сторону от тупика). Напишите программу, определяющую, можно ли это сделать.
Входные данные
Вводится число N
— количество вагонов в поезде (\(1<=N<=2000\)). Дальше идут номера вагонов в порядке от головы поезда, едущего по пути 1 в сторону тупика. Вагоны пронумерованы натуральными числами от 1
до N
, каждое из которых встречается ровно один раз.
Выходные данные
Можно ли сделать так, чтобы вагоны шли в порядке от 1
до N
, считая от головы поезда, когда поезд поедет по пути 2 из тупика? Если можно, выведите сообщение YES
. Если нельзя, то выведите NO
.
Примеры
№ |
Входные данные |
Выходные данные |
Примечание |
1 |
3
3 2 1 |
YES |
Надо весь поезд завезти в тупик, а затем целиком вывезти его на 2-й путь |
2 |
4
4 1 3 2
|
YES
|
Сначала надо в тупик завезти два вагона, один из которых оставит в тупике, а второй — вывезти на 2-й путь, после чего завезти в тупик еще два вагона и вывезти 3 вагона, стоящие в тупике, на 2-й путь |
3 |
3
2 3 1 |
NO |
|