#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char *base;
char *top;
int size;
}sq;
void st(sq &l,int a)
{
l.base=(char *)malloc(a*sizeof(char ));
l.top=l.base;
}
void push(sq &l,int a)
{
*l.top=a;
l.top++;
}
int pop(sq &l)
{
l.top--;
return (*l.top);
}
int main()
{
sq l;
char a[100];
while(gets(a)!=NULL)
{
int n=strlen(a);
st(l,n);
int flag=0;
for(int i=0;i<n;i++)
{
if(a[i]=='('||a[i]=='{'||a[i]=='[')
{
push(l,a[i]);
}
else if(a[i]==')')
{
if(l.top==l.base)
{
flag=1;
//printf("no\n");
break;
}
else
{
if(*(l.top-1)=='(')
{
l.top--;
}
else
{
flag=1;
break;
}
}
}
else if(a[i]=='}')
{
if(l.top==l.base)
{flag=1;
break;
}
else
{
if(*(l.top-1)=='{')
{
l.top--;
}
else
{
flag=1;
break;
}
}
}
else if(a[i]==']')
{
if(l.top==l.base)
{ flag=1;
// printf("no\n");
break;
}
else
{
if(*(l.top-1)=='[')
{
l.top--;
}
else
{
flag=1;
break;
}
}
}
}
if(l.top==l.base&&flag==0)
{
printf("yes\n");
}
else
{
printf("no\n");
}
}
return 0;
}
#include <stdlib.h>
#include <string.h>
typedef struct
{
char *base;
char *top;
int size;
}sq;
void st(sq &l,int a)
{
l.base=(char *)malloc(a*sizeof(char ));
l.top=l.base;
}
void push(sq &l,int a)
{
*l.top=a;
l.top++;
}
int pop(sq &l)
{
l.top--;
return (*l.top);
}
int main()
{
sq l;
char a[100];
while(gets(a)!=NULL)
{
int n=strlen(a);
st(l,n);
int flag=0;
for(int i=0;i<n;i++)
{
if(a[i]=='('||a[i]=='{'||a[i]=='[')
{
push(l,a[i]);
}
else if(a[i]==')')
{
if(l.top==l.base)
{
flag=1;
//printf("no\n");
break;
}
else
{
if(*(l.top-1)=='(')
{
l.top--;
}
else
{
flag=1;
break;
}
}
}
else if(a[i]=='}')
{
if(l.top==l.base)
{flag=1;
break;
}
else
{
if(*(l.top-1)=='{')
{
l.top--;
}
else
{
flag=1;
break;
}
}
}
else if(a[i]==']')
{
if(l.top==l.base)
{ flag=1;
// printf("no\n");
break;
}
else
{
if(*(l.top-1)=='[')
{
l.top--;
}
else
{
flag=1;
break;
}
}
}
}
if(l.top==l.base&&flag==0)
{
printf("yes\n");
}
else
{
printf("no\n");
}
}
return 0;
}