#include <iostream> #include<bits/stdc++.h> #define max 100 using namespace std; typedef struct{ char *top; char *base; int size; } Note;
void initstack(Note *s); char pop(Note &s); void push(Note &s,char ch); char gettop(Note s); int main() { Note s; initstack(&s); int flag=1; char ch; cin>>ch; while(ch!='#'){ switch(ch){ case '(':push(s,ch);break; case '[':push(s,ch);break; case '{':push(s,ch);break;
case ')':if(s.top==s.base||pop(s)!='(') flag=0; break; case ']':if(s.top==s.base||pop(s)!='[') flag=0; break; case '}':if(s.top==s.base||pop(s)!='{') flag=0; break;
} if(flag==0){ break; } cin>>ch; }
//cout<<flag; if(flag==1&&s.top==s.base)
cout<<"ture"; else cout<<"false";
// push(s,'a'); // push(s,'b'); //push(s,'c'); // printf("%c %c %c",pop(s),pop(s),pop(s)); // printf("%c ",pop(s)); // printf("%c ",pop(s)); // printf("%c ",gettop(s)); // printf("%c ",pop(s)); // printf("%c ",gettop(s));
return 0; }
char gettop(Note s){ if(s.top!=s.base) return *(s.top-1); else {//printf("ц╩ак"); return 0;}
}
char pop(Note &s){ if(s.top-s.base==0){
//printf("©уак"); exit(0); } s.top--; return *s.top;
}
void push(Note &s,char ch){ if(s.top-s.base==s.size){
//printf("бЗак"); exit(0); } *s.top=ch; s.top++;
}
void initstack(Note *s) { //s->base=(char *)malloc(max*sizeof(char)); s->base=new char[max]; s->top=s->base; s->size=max; }