hanoig

Sa consideram 3 tije (notate A, B, C). Pe tija A se afla n discuri de k dimensiuni distincte d1>d2>...>dk.
Mai exact, exista m1 discuri de diametru d1, m2 discuri de diametru d2, ..., mk discuri de diametru dk.
Evident, m1+m2+...+mk=n.
Discurile sunt asezate initial pe tija A în ordinea descrescatoare a dimensiunilor, privind de la baza spre vârf (deci la baza sunt cele m1 discuri de diametru d1, apoi urmeaza cele m2 discuri de diametru d2, ...).
La o mutare se poate deplasa un singur disc de pe o tija pe alta, dar niciodata nu va fi plasat un disc de diamentru mai mare peste un disc cu diametru mai mic.
Scopul este de a muta toate discurile de pe tija A pe tija B, respectând permanent ordinea descrescatoare a dimensiunilor.
Tija C poate fi folosita ca tija de manevra.

Cerinta

Scrieti un program care sa determine numarul minim de mutari care trebuie sa fie executate pentru a deplasa cele n discuri de pe tija A pe tija B.

Date de intrare

Fisierul de intrare hanoig.in contine pe prima linie numarul natural k, cu semnificatia din enunt. Pe cea de a doua linie se afla k numere naturale separate prin câte un spatiu m1 m2 ... mk.

Date de iesire

Fisierul de iesire hanoig.out va contine o singura linie pe care va fi scris numarul minim de mutari care trebuie sa fie executate pentru a deplasa cele n=m1+m2+...+mk discuri de pe tija A pe tija B.

Restrictii si precizari

Exemplu
hanoig.in hanoig.out

2
2 3

8

Timp maxim de executie/test: 0.1 secunde

prof. Emanuela Cerchez
Liceul de Informatica "Grigore Moisil" Iasi
Contact:emanuela.cerchez@gmail.com