expresii

Fie X multimea definita dupa urmatoarele reguli:
· sirul vid apartine multimii X
· daca A si B apartin multimii X, atunci atat sirul (A) cat si AB apartin multimii X.

Elementele multimii X sunt denumite expresii corect parantezate.
De exemplu, urmatoarele siruri sunt expresii corect parantezate:
()(())()
(()(()))

Urmatoarele expresii nu sunt corect parantezate:
(()))(()
())(()

Fie E o expresie corect parantezata. Lungimea expresiei E este egala cu numarul de paranteze din aceasta expresie. Adancimea expresiei E (notata D(E)) este definita dupa cum urmeaza:

D(E)=0, daca E este vida
D(E)=D(A)+1, daca E = (A), si A este din X
D(E)=max(D(A),D(B)), daca E = AB, si A, B sunt din X

Cerinta
Scrieti un program care sa determine numarul de expresii corect parantezate de lungime n si adancime d.

Date de intrare
Fisierul de intrare expresii.in contine o singura linie pe care se afla doua numere naturale n d, separate printr-un spatiu, avand semnificatia din enunt.

Date de iesire
Fisierul de iesire expresii.out va contine un singur numar natural reprezentand numarul de expresii corect parantezate de lungime n si adancime d.

Restrictii
1<n<39
0<d<20

Exemple

expresii.in expresii.out Explicatie

6 2

3

Cele 3 expresii corect parantezate de lungime 6 si adancime 2 sunt:
(())()
()(())
(()())

Timp maxim de executie/test: 0.1 secunde

prof. Emanuela Cerchez
Liceul de Informatica "Grigore Moisil" Iasi
Contact:ema at mail.dntis.ro