Przekładanka
Limit pamięci: 64 MB
Bajtazar kupił synkowi Bajtkowi zestaw klocków ponumerowanych od do i ustawił je w rzędzie w pewnej kolejności.
Zadaniem Bajtka jest ustawienie klocków w kolejności numerów tych klocków, od najmniejszego do największego.
Jedyne ruchy, jakie może wykonywać Bajtek, to:
-
przełożenie ostatniego klocka na początek (ruch typu a), oraz
-
przełożenie trzeciego klocka na początek (ruch typu b).
Pomóż Bajtkowi i napisz program, który sprawdzi, czy dany układ klocków da się w ogóle ustawić w żądanej kolejności, a jeżeli tak,
to poda, jak to zrobić.
Wejście
W pierwszym wierszu standardowego wejścia znajduje się jedna liczba całkowita , .
W drugim wierszu znajduje się liczb całkowitych z zakresu od do pooddzielanych pojedynczymi odstępami.
Liczby te nie powtarzają się i reprezentują początkowe ustawienie klocków.
Wyjście
Jeśli nie istnieje sekwencja ruchów prowadząca do ustawienia klocków w porządku rosnącym numerów, Twój program powinien
wypisać na standardowe wyjście "NIE DA SIE" (bez cudzysłowów).
W przeciwnym przypadku, w pierwszym wierszu wyjścia powinna znaleźć się jedna liczba całkowita (),
oznaczająca liczbę wykonywanych operacji.
Przez operację rozumiemy -krotne wykonanie jednego z ruchów a lub b.
Jeżeli , to w drugim wierszu powinien znaleźć się ciąg liczb całkowitych z dodanymi pojedynczymi znakami a lub b.
Zapis postaci a (dla ) oznacza -krotne wykonanie ruchu a.
Zapis postaci b (dla ) oznacza -krotne wykonanie ruchu b.
Dodatkowo, znaki stowarzyszone z liczbami znajdującymi się w drugim wierszu muszą być ułożone na przemian.
Jeśli istnieje więcej niż jedno rozwiązanie, Twój program może wypisać dowolne z nich.
Przykład
Dla danych wejściowych:
4
1 3 2 4
poprawną odpowiedzią jest:
4
3a 2b 2a 2b
natomiast dla danych:
7
1 3 2 4 5 6 7
poprawnym wynikiem jest:
NIE DA SIE
a dla danych:
3
1 2 3
poprawnym wynikiem jest:
0
Autorzy zadania: Krzysztof Diks, Wojciech Rytter.