# PBinfo #849 – Paranteze2 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Se dă un șir de paranteze rotunde care se închid corect (corect parantezat). Să se determine adâncimea parantezării.

Pentru un șir de paranteze închise corect S, adâncimea parantezării, D(S) este definită astfel:


dacă șirul S este vid, D(S)=0
dacă S=(T), unde T este un șir de paranteze corect, D(S)=1+D(T)
dacă S=AB, unde A și B sunt șiruri de paranteze corecte, D(S)=max{D(A),D(B)}

Date de intrare
Fișierul de intrare paranteze2.in conține pe prima un  șir de paranteze rotunde, corect parantezat.

Date de ieșire
Fișierul de ieșire paranteze2.out va conține pe prima linie un număr M, reprezentând adâncimea parantezării.

Restricții și precizări

șirul va conține cel mult 254 de paranteze

Exemplu:
paranteze2.in

()((()())())
paranteze2.out

3

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("paranteze2.in");
ofstream fout("paranteze2.out");
int n;
char s[256];
int main()
{
	fin >> s;
	int ok = 1;
	int nivel = 0 , niv_max = 0;
	for(int i = 0 ; s[i] && ok ; i ++)
		if(s[i] == '(')
		{
			nivel ++;
			if(nivel > niv_max)
				niv_max = nivel;
		}
		else
			if(nivel > 0)
				nivel --;
			else
				ok = 0;
	if(nivel > 0)
			ok = 0;
	if(!ok)
		cerr << "Incorect";
	else
		fout << niv_max;
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/849)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/849/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-849/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
