printРабочее место участника

printЗадачи

2293. Пасьянс

Ограничения: время – 2s/4s, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Чтобы успокоиться после сеанса психотерапии, мистер Маки раскладывает пасьянс. Для его любимого пасьянса используется `N` карт, пронумерованных от 1 до `N`. Сначала карты раскладываются в `N` стопок по одной карте. Новые стопки в процессе игры не появляются, но стопка остается существующей, даже если в ней не осталось ни одной карты. Разрешается перемещать верхнюю карту из стопки на соседнюю стопку, только если номер верхней карты в ней больше или соседняя стопка пуста. Игра заканчивается, когда во всех стопках снова по одной карте, и при этом они образуют числовой ряд от 1 до `N` слева направо.
Напишите программу, определяющую, сходится ли пасьянс и какое минимальное количество ходов потребуется для его решения.
Первая строка ввода содержит одно целое число `N` (`1\ ≤\ N\ ≤\ 7`). Вторая строка содержит перестановку чисел от 1 до `N` – начальное расположение карт.
Вывести одно целое число – минимальное количество ходов для решения пасьянса. Если решение пасьянса невозможно, то вывести сообщение "IMPOSSIBLE".

Пример ввода #1

3
3 2 1

Пример вывода #1

20

Пример ввода #2

2
2 1

Пример вывода #2

IMPOSSIBLE
Пояснение к примеру 1
Ход123
-321
1312
2132
3132
4312
5312
6312
7132
8132
9123
10123
11231
12231
13213
14123
15123
16213
17213
18213
19123
20123
loading