plus

Time limit: 0.07s Memory limit: 10MB Input: plus.in Output: plus.out

Locuitorii planetei Aritmo au hotărât ca în celebrul an 20122012 să le explice pământenilor metoda „plus” de adunare a numerelor naturale pe planeta lor. La fel ca şi planetele, înainte de adunare, numerele se aliniază astfel încât să se obţină cât mai multe cifre egale pe aceleaşi poziţii. Cifrele egale, astfel obţinute, se elimină din cele două numere. Pentru a obţine rezultatul final, se adună cele două numerele deplasate, obţinute după eliminare, ca în exemplu.

Exemplu: Numerele 18 93518 \ 935 şi 85 35285 \ 352 se aliniază ca în figura alăturată. După eliminare se obţin numerele 1919 şi 5252 care se adună deplasate, pentru a obţine rezultatul final. Aşadar 18 935 plus 85 352=24218 \ 935 \ plus \ 85 \ 352 = 242.

Dacă există mai multe posibilităţi de a alinia numerele astfel încât să se elimine acelaşi număr maxim de cifre, atunci numerele sunt aliniate astfel încât, după eliminare şi adunarea numerelor după metoda descrisă, să se obţină o valoare cât mai mare.

Exemplu: 22 331 plus 3 322=33 33122 \ 331 \ plus \ 3 \ 322 = 33 \ 331 (există două moduri în care cele două numere pot fi aliniate astfel încât să se elimine un număr maxim de cifre, valoarea maximă obţinându-se atunci când se elimină cele două cifre 22)

Dacă două numere aa şi bb sunt identice sau nu au cifre comune atunci a plus b=0a \ plus \ b = 0.

Dacă se elimină toate cifrele unui număr atunci rezultatul este dat de cifrele rămase în celălalt număr.

Exemple: 23 plus 523=5,562 plus 56=2.23 \ plus \ 523 = 5, 562 \ plus \ 56 = 2.

Adunarea mai multor numere se face de la stânga la dreapta: se adună primele două numere conform metodei descrise mai sus, apoi rezultatul se adună cu al treilea, şi aşa mai departe.

Într-o expresie în care se adună mai multe numere pot să apară paranteze rotunde. În evaluarea unei asemenea expresii, numită expresie parantezată, se efectuează mai întâi adunările din paranteze conform metodei descrise mai sus, parantezele fiind apoi înlocuite cu rezultatul adunărilor din paranteze.

Se defineşte adâncimea AEA_E corespunzătoare unei expresii parantezate EE astfel:

  • dacă expresia EE nu conţine paranteze, atunci adâncimea acesteia este 00;
  • dacă expresia EE este de forma (F)(F), atunci AE=1+AFA_E=1+A_F;
  • dacă expresia EE este de forma E1 plus E2plus EkE1 \ plus \ E2 \ldots plus \ Ek, atunci AE= max (AE1,AE2,,AEk)A_E = \ max \ (A_{E1}, A_{E2}, \ldots , A_{Ek}).

Cerință

Pentru a-i ajuta pe pământenii care doresc să înveţe acest nou mod de adunare, scrieţi un program care citeşte o expresie parantezată şi determină:

a)a) adâncimea expresiei date;

b)b) valoarea acestei expresii.

Date de intrare

Fişierul plus.in conţine pe prima linie un număr natural nn. Pe următoarele nn linii se află descrierea expresiei parantezate. Pe fiecare dintre aceste linii se află un număr natural sau una dintre valorile 1-1 sau 2-2. Valoarea 1-1 reprezintă o paranteză rotundă deschisă iar valoarea 2-2 reprezintă o paranteză rotundă închisă.

Date de ieșire

Fişierul de ieşire plus.out va conţine:
a)a) pe prima linie numărul natural ce reprezintă adâncimea expresiei date;

b)b) pe a doua linie se va scrie numărul natural ce reprezintă rezultatul evaluării expresiei date, adunarea numerelor făcându-se conform metodei descrise.

Restricții și precizări

  • 1<n2 0001 < n \leq 2 \ 000
  • fiecare dintre celelalte numere naturale din fişier are cel mult 99 cifre
  • în fiecare paranteză se află cel puţin un număr natural
  • dacă într-o paranteză se află un singur număr natural, atunci valoarea expresiei este egală cu valoarea numărului din paranteză
  • pentru rezolvarea corectă a cerinţei a)a) se acordă 20%20\% din punctaj, iar pentru rezolvarea corectă a ambelor cerinţe se acordă punctajul integral.

Exemplu

plus.in

12
-1
1343
-1
234
4532
-2
-2
14091
-1
21
2
-2

plus.out

2
4639

Explicație

Expresia parantezată care trebuie evaluată este:

(1 343 plus (234 plus 4532)) plus 14 091 plus (21 plus 2)=(1 343 plus 45 334) plus 14 091 plus (21 plus 2)=4 543 plus 14 091 plus (21 plus 2)=4 543 plus 14 091 plus 1=46 391 plus 1=4 639(1 \ 343 \ plus \ (234 \ plus \ 4532)) \ plus \ 14 \ 091 \ plus \ (21 \ plus \ 2) = \\ (1 \ 343 \ plus \ 45 \ 334) \ plus \ 14 \ 091 \ plus \ (21 \ plus \ 2) = \\ 4 \ 543 \ plus \ 14 \ 091 \ plus \ (21 \ plus \ 2)= \\ 4 \ 543 \ plus \ 14 \ 091 \ plus \ 1= \\ 46 \ 391 \ plus \ 1 = 4 \ 639

Valoarea expresei este 4 6394 \ 639.

Adâncimea expresiei este 22, deoarece:

  • A(1 343 plus (234 plus 4 532)) plus 14 091 plus (21 plus 2)= max (A(1 343 plus (234 plus 4 532)),A14 091,A(21 plus 2))=max (2,0,1)=2A_{(1 \ 343 \ plus \ (234 \ plus \ 4 \ 532)) \ plus \ 14 \ 091 \ plus \ (21 \ plus \ 2)} = \ max \ (A_{(1 \ 343 \ plus \ (234 \ plus \ 4 \ 532))},A_{14 \ 091}, A_{(21 \ plus \ 2)} )=max \ (2,0,1)=2
  • A(1 343 plus (234 plus 4 532))=1+max (A1 343,A(234 plus 4 532))=1+max (0,1)=2A1 343=0A_{(1 \ 343 \ plus \ (234 \ plus \ 4 \ 532))}= 1 + max \ (A_{1 \ 343}, A_{(234 \ plus \ 4 \ 532))} = 1 + max \ (0,1) = 2 A_{1 \ 343}=0
  • A(234 plus 4 532)=1+A234 plus 4 532=1+0=1A_{(234 \ plus \ 4 \ 532)} = 1 + A_{234 \ plus \ 4 \ 532} = 1 + 0 = 1

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