Dezgandacire

Publicat de: Oepeling
Memorie: 64.0MB/64.0MB
Timp de execuție: 0.1s
Operații IO: stdin/stdout

Ieri la cursul de Evaluare de Expresii, Andreea se chinuia din greu să-și dezgândăcească codul. Venind la ea să o ajute, Oana s-a oripilat de forma pe care o aveau expresiile cu care se lupta Andreea și a zis că așa ceva nu se poate rezolva și că primul pas ar fi să le aducă într-o formă mai simplă.

Expresiile cu care lucrează Andreea sunt exprimate într-o formă funcțională care poate conține următoarele elemente:

  • sum($e_1, e_2, … e_n$) care se evaluează ca $e_1 + e_2 + … + e_n$
  • sub($e_1, e_2, … e_n$) care se evaluează ca $e_1 – e_2 – … – e_n$
  • mul($e_1, e_2, … e_n$) care se evaluează ca $e_1 * e_2 * … * e_n$
  • div($e_1, e_2, … e_n$) care se evaluează ca $e_1 / e_2 / … / e_n$
  • Variabile date prin litere mari ale alfabetului englez

În cele de mai sus $e_i$ sunt la rândul lor expresii și operația $/$ este împărțire pe numere reale (nu doar câtul împărțirii).

Oana o sfătuiește ca înainte de toate să-și traducă expresia din forma funcțională în forma normală care poate conține:

  • Operatorii $+$, $-$, $*$, $/$ cu sensul lor matematic
  • Paranteze rotunde $($ și $)$
  • Variabile date prin litere mari ale alfabetului englez

Pentru ca Andreea să poată rezolva mai departe problema corect, trebuie ca expresia rezultată să fie perfect echivalentă cu cea inițială. Două expresii se consideră echivalente dacă înlocuind variabilele din ele cu aceleași valori și se evaluează corespunzător cele două expresii, rezultatul final este același.

Întrucât Andreea se simte depășită de această transformare, voi, ca niște cavaleri ce sunteți, îi săriți în ajutor.

Cerință

Dându-se o expresie în forma funcțională, să se traducă într-o expresie echivalentă în forma normală.

Date de intrare

Pe prima linie se va afla un șir de caractere care nu conține spații și descrie o expresie corectă în formă funcțională.

Date de ieșire

Pe prima linie se va afișa un șir de caractere care nu conține spații și reprezintă o expresie în formă normală echivalentă cu expresia primită.

Restricții și precizări

  • $1 \leq$ lungimea expresiei date $\leq 200.000$

Subtask-uri

Punctaj Restricții
1 31 Expresia primită va conține doar funcții de tipul sum.
2 32 În expresia primită, toate funcțiile primite vor avea exact doi parametri.
3 37 Fără restricții adiționale.

Exemple

Exemplu

Intrare

sum(A,div(B,C),sub(D,E),mul(B,A))

Ieșire

A+B/C+D-E+B*A

Exemplu

Intrare

mul(I,div(V,sum(U,U),mul(N,E,P)))

Ieșire

I*V/(U+U)/(N*E*P)