Here you'll find the problem: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=614
#include<iostream>
#include<stack>
#include<string>
#include<cstdio>
/*farnaws,C++,673,08/12/2012*/
using namespace std;
string verifier(string input_line)
{
stack <char> braces;
int flag=0, count_left_first_brace=0,count_left_third_brace=0;
for(int i=0; i<input_line.size(); i++)
{
if(input_line[i]=='(' || input_line[i]=='[')
{
braces.push(input_line[i]);
if(input_line[i]=='(')
{
count_left_first_brace++;
}
else if(input_line[i]=='[')
{
count_left_third_brace++;
}
}
else if(input_line[i]==')' || input_line[i]==']')
{
if(!(braces.empty()==true))
{
if((input_line[i]==')' && braces.top()=='(') || (input_line[i]==']' && braces.top()=='[') )
{
braces.pop();
}
}
if(input_line[i]==')')
{
count_left_first_brace--;
}
else if(input_line[i]==']')
{
count_left_third_brace--;
}
}
}
if((braces.size()==0 && count_left_third_brace>=0 && count_left_first_brace>=0) || input_line.empty())
{
return "Yes";
}
else
{
return "No";
}
}
int main()
{
char line[128];
int limit;
cin>>limit;
getchar();
for(int i=0; i<limit; i++)
{
cin.getline(line,sizeof(line));
string str=line;
cout<<verifier(str)<<endl;
}
return 0;
}