eval

Time limit: 0.05s Memory limit: 4MB Input: eval.in Output: eval.out

Să considerăm o expresie aritmetică care conţine ca operanzi numai variabile al căror nume este format dintr-o singură literă mică a alfabetului englez. Valorile iniţiale ale variabilelor ce pot interveni în expresie sunt: a=1a = 1, b=2b = 2, \dots, z=26z = 26. În expresie pot fi utilizaţi doi operatori binari (+ şi , reprezentând adunarea şi respectiv scăderea) şi doi operatori unari (++ şi --, reprezentând operatorul de incrementare şi respectiv operatorul de decrementare). Operatorii unari ++ şi –– pot fi plasaţi numai înainte sau după o variabilă. Dacă operatorul unar ++ apare înaintea unei variabile, atunci valoarea variabilei este mărită cu 11 înainte ca valoarea variabilei să fie luată în calculul expresiei. De exemplu, valoarea expresiei ++c–b este 22, iar valoarea variabilei cc după evaluarea expresiei va fi 44. Când operatorul unar ++ apare după variabilă, valoarea variabilei este mărită cu 11 după ce valoarea acelei variabile este folosită la calculul expresiei. De exemplu, valoarea expresiei c++–b este 11, iar valoarea variabilei cc după evaluarea expresiei va fi 44. Operatorul –– se comportă la fel, cu observaţia că valoarea variabilei se va micşora cu 11. Operatorii unari au prioritate mai mare decât cei binari (mai exact, se execută mai întâi incrementările/decrementările, apoi adunările şi scăderile). În cazul în care există mai multe operaţii cu aceeaşi prioritate, acestea vor fi executate în ordine, de la stânga la dreapta.

Cerință

Scrieţi un program care să determine valoarea unei expresii, precum şi valorile finale ale variabilelor folosite în expresie.

Date de intrare

Fișierul de intrare eval.in conţine pe prima linie expresia. Aceasta poate conţine şi spaţii.

Date de ieșire

Fișierul de ieșire eval.out conţine pe prima linie un număr întreg care reprezintă valoarea expresiei, iar pe următoarele linii valorile variabilelor folosite în expresie, câte o valoare pe fiecare linie, în ordinea alfabetică a variabilelor.

Restricții și precizări

  • Expresia va conţine cel puţin o variabilă.
  • Numărul de caractere din expresie este mai mic decât 1 0001\ 000.
  • Expresia nu conţine nicio ambiguitate (de forma a+++b sau a---b) .
  • Operatorii ++ şi –– nu vor apărea simultan înainte şi după o variabilă (de exemplu, ++a++ sau ++a--).

Exemplul 1

eval.in

d -- + a – b

eval.out

3
1
2
3

Explicație

Valoarea expresiei este 33.

  • a=1a = 1
  • b=2b = 2
  • d=3d = 3

Exemplul 2

eval.in

q- u   -+         +a-c++ - ++ t

eval.out

-30
2
4
17
21
21

Explicație

Valoarea expresiei este 30-30.

  • a=2a = 2
  • c=4c = 4
  • q=17q = 17
  • t=21t = 21
  • u=21u = 21

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