Time limit: 0.1s
Memory limit: 64MB
Input:
Output:
Ți se dă o strucutră de date numită Abstract Syntax Tree, trebuie să afli expresia și valoarea expresiei defintă din AST. Arborele este format din noduri.
Date de intrare
Pe prima linie se află de numere reprezentând valorile variabilelor (primul număr reprezintă valoarea variabilelei , al doilea , )
Pe a doua linie se gasește un număr natural .
Pe urmatoarele linii se află descripția fiecărui nod. Dacă pe linia se află un număr natural sau o literă a alfabetului latin, atunci în nodul se află o constantă, respectiv o variabilă. Altfel pe linia se va afla un șir de caractere din multimea , urmat de un număr care reprezintă câți fii are nodul , urmat de un șir de numere naturale care reprezintă fii nodului
Date de ieșire
Pe prima linie se va afla un șir de caractere care reprezintă expresia definită din AST, iar pe cea de a doua linie un număr întreg care reprezintă valoarea expresiei de pe linia de mai sus.
Restricții și precizări
- ;
- Se asigură că rezultatul intră în tipul de date din limbajul C++
Exemplul 1
stdin
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3
+ 2 2 3
1
2
stdout
1+2
3
Explicație
După cum știm, .
Exemplul 2
stdin
3 1 5 6 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7
() 1 2
+ 2 3 4
a
() 1 5
+ 2 6 7
c
d
stdout
(a+(c+d))
14
Explicație
Exemplul 3
stdin
1 2 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15
- 2 2 3
250
* 2 4 5
() 1 11
* 2 7 8
* 2 10 9
() 1 6
4
10
d
+ 2 12 13
* 2 14 15
c
a
b
stdout
250-(a*b+c)*(d*10)*4
50
Explicație
Atenție, nodul din poza de mai jos conține semnul -
, nu +
! Este o greșeală.