#include
#include
#include
#include
using namespace std;
struct node{
int size;
char *base,*top;
};
node stack;
const int stacksize=10;
bool isbracket(char x)
{
if(x=='('||x==')'||x=='['||x==']')
return true;
return false;
}
int main()
{
string s;
int i,flag;
flag=1;
stack.size=stacksize;
stack.base=(char*)malloc(stack.size*sizeof(char));
if(!stack.base)
exit(OVERFLOW);
stack.top=stack.base;
getline(cin,s);
for(i=0;i=stack.size)
{
stack.base=(char*)realloc(stack.base,(stack.size+stacksize)*sizeof(char));
stack.top=stack.base+stack.size;
stack.size+=stacksize;
}
if(isbracket(s[i]))
{
if(s[i]=='('||s[i]=='[')
{
*stack.top=s[i];
stack.top+=1;
}
else {
if(stack.base==stack.top)
{
flag=0;
cout<<"error"<