Răspuns :
Răspuns:
#include <iostream>
#include <deque>
using namespace std;
//ifstream cin ("balans.in");
//ofstream cout ("balans.out");
deque <int> dq, a;
bool mere()
{
a=dq;
long long int suma=0;
while(!a.empty())
{
suma += a.front();
if(suma < 0)
return 0;
a.pop_front();
}
return 1;
}
int main()
{
long long int Q, suma = 0, tip_paranteza, nr_elemente=0;
long long int i;
char ch,ult_paranteza = '2';
cin >> Q;
for( i = 1 ; i <= Q ; i ++)
{
cin>>ch;
if(ult_paranteza == ch && nr_elemente)
{
if(ch=='(')
tip_paranteza = 1;
else
tip_paranteza = -1;
dq[dq.size()-1] += tip_paranteza;
suma += tip_paranteza;
nr_elemente++;
}
else
{
if(ch == 'P')
{
if(nr_elemente)
{
int a=dq.front();
if (a >= 1)
{
dq.front() = a-1;
suma -= 1;
}
else
{
if (a <= -1)
{
dq.front () = a+1;
suma += 1;
}
}
if(dq.front() == 0)
dq.pop_front();
nr_elemente--;
}
}
else
{
if(ch=='(')
tip_paranteza = 1;
else
tip_paranteza = -1;
dq.push_back(tip_paranteza);
suma += tip_paranteza;
ult_paranteza = ch;
nr_elemente++;
}
}
if(suma!=0)
cout<<0;
else
{
if(mere())
cout<<1;
else
cout<<0;
}
//cout<<suma<<'\n';
}
return 0;
}
Explicație: