Fişierul intrare/ieşire:paranteze3.in, paranteze3.outSursăCerc informatică Vianu
AutorTeorieAdăugată defrancuCristian Francu francu
Timp execuţie pe test0.1 secLimită de memorie1024 kbytes
Scorul tăuN/ADificultatenormalnormalnormalnormalnormal

Vezi solutiile trimise

Paranteze 3 (clasa a 8-a)

Notă: acesta este un exerciţiu introductiv de analiză sintactică (parsing). Problema trebuie implementată folosind analizorul recursiv cu proceduri. Vectorii sînt interzişi. Aceasta înseamnă că sursa voastră nu poate fi C++ din motive de STL. Îmi pare rău.

O expresie este corectă dacă conţine numai paranteze rotunde şi acolade corect închise şi nici un alt caracter, nici măcar spaţiu. De exemplu ()({}()({})) este o expresie corectă, în vreme ce ({)} nu este o expresie corectă şi nici {}({})). O expresie vidă (care nu conţine nici un caracter) este corectă.

Cerinţă

Dat un şir de caractere determinaţi dacă formează o expresie corectă şi determinaţi gradul maxim de imbricare. Gradul maxim de imbricare este numărul maxim de paranteze una într-alta.

Date de intrare

Fişierul de intrare paranteze3.in conţine o singură linie de caractere, terminată cu caracterul sfîrşit de linie.

Date de ieşire

În fişierul de ieşire paranteze3.out se va afişa un singur număr, gradul maxim de imbricare dacă expresia este corectă, sau -1 dacă expresia este incorectă.

Restricţii

  • linia de la intrare are maxim un milion de caractere, excluzînd finalul de linie
  • linia de la intrare se termină cu caracterul sfîrşit de linie, '\n'
  • testele sînt grupate cîte două: pentru a lua punctaj la un grup de teste trebuie să răspundeţi corect la ambele teste din grup

Exemple

paranteze3.inparanteze3.out
{}({}){{(({}))}}
5
({
-1
({)}
-1
{}({}))
-1
Trebuie sa te autentifici pentru a trimite solutii. Click aici