Pagini recente » Cod sursa (job #234866) | Cod sursa (job #1697135) | Cod sursa (job #2590558) | Cod sursa (job #2977249) | Cod sursa (job #3126828)
#include <iostream>
#include <stack>
#include <fstream>
#include <string>
using namespace std;
ifstream in("paranteze.in");
ofstream out("paranteze.out");
stack<int> s;
bool is_deschidere(char x)
{
return x == '(' || x == '{' || x == '[';
}
bool is_inchidere(char x)
{
return x == ')' || x == '}' || x == ']';
}
bool close_parant(char x, char y)
{
return (x=='(' && y==')') || (x=='[' && y == ']') || (x=='{' && y == '}');
}
int main()
{
int n;
string sir;
in>>n;
in>>sir;
int mx = 0, ct = 0;
for(int i = 0; i<=n; i++)
{
if(is_deschidere(sir[i]))
s.push(i);
else
{
if(s.empty())
continue;
if(close_parant(sir[s.top()], sir[i]))
{
s.pop();
if(s.empty())
ct=i+1;
else
ct = i-s.top();
if(ct>mx)
mx = ct;
}
else
s.push(i);
}
}
out<<mx;
return 0;
}