Fișierul intrare/ieșire | paranteze3.in, paranteze3.out | Sursă | Cerc informatică Vianu |
---|---|---|---|
Autor | teorie | Adăugată de | Cristian Frâncu • francu |
Timp de execuție pe test | 0.1 sec | Limită de memorie | 1024 KB |
Scorul tău | N/A | Dificultate |
Vezi soluțiile trimise | Statistici
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.in | paranteze3.out |
---|---|
{}({}){{(({}))}} |
5 |
({ |
-1 |
({)} |
-1 |
{}({})) |
-1 |