RoAlgo Contest #4 (avansati) | ast

This was the problem page during the contest. Access the current page here.
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 NN noduri.

Date de intrare

Pe prima linie se află 2626 de numere reprezentând valorile variabilelor (primul număr reprezintă valoarea variabilelei aa, al doilea bb, \dots)
Pe a doua linie se gasește un număr natural NN.
Pe urmatoarele NN linii se află descripția fiecărui nod. Dacă pe linia ii se află un număr natural sau o literă a alfabetului latin, atunci în nodul ii se află o constantă, respectiv o variabilă. Altfel pe linia ii se va afla un șir de caractere din multimea {+,-,*,(),/}\{\texttt{+}, \texttt{-}, \texttt{*}, \texttt{()}, \texttt{/}\}, urmat de un număr kik_i care reprezintă câți fii are nodul ii, urmat de un șir de kik_i numere naturale care reprezintă fii nodului ii

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

  • 1N1051 \leq N \leq 10^5;
  • Se asigură că rezultatul intră în tipul de date long long\texttt{long long} 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, 1+2=31 + 2 = 3.

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

(a+(c+d))(3+(5+6))=14(a + (c + d)) \Leftrightarrow (3 + (5 + 6)) = 14

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

250(ab+c)(d10)4250(12+3)(110)4=50250-(a*b+c)*(d*10)*4 \Leftrightarrow 250-(1*2+3)*(1*10)*4 = 50
Atenție, nodul 11 din poza de mai jos conține semnul -, nu +! Este o greșeală.

Contest info

Official contest

Start time: 1692432000000

Total duration: 4h0m0s

Status: Ended

Log in or sign up to be able to send submissions!