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).
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.