Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <cstdlib>
- #include <string>
- using namespace std;
- struct stack {
- char* m;
- int cap;
- int last;
- stack(){
- cap=8;
- m=(char*)malloc(cap*sizeof(char));
- last=0;
- }
- ~stack(){
- free(m);
- }
- void print(){
- //cout<<cap<<" "<<last<<" $$ ";
- for(int i=0;i<cap;i++)
- if(i>=last) cout<<"x ";
- else cout<<*(m+i)<<" ";
- cout<<'\n';
- }
- bool empty(){
- return last==0;
- }
- void push(char val) {
- if(last == cap) {
- m=(char*)realloc(m,cap*2*sizeof(char));
- cap*=2;
- }
- m[last++]=val;
- }
- int pop(){
- int result = m[--last];
- if(cap > 1 && 4*last<=cap){
- m =(char*)realloc(m,(cap+1)/2*sizeof(char));
- cap=(cap + 1)/2;
- }
- return result;
- }
- };
- int main(){
- ios::sync_with_stdio(0);
- freopen("bracketsout.txt","w",stdout);
- freopen("bracketsin.txt","r",stdin);
- string s;
- while(cin>>s){
- stack st;
- bool ans=1;
- for(unsigned int i=0;i<s.size();i++){
- if(s[i]=='(' || s[i]=='[')
- st.push(s[i]);
- if(s[i]==')'){
- if(st.m[st.last-1]=='(') st.pop();
- else ans=0;
- }
- if(s[i]==']'){
- if(st.m[st.last-1]=='[') st.pop();
- else ans=0;
- }
- //st.print();
- }
- if(st.empty() && ans) cout<<"YES"<<'\n';
- else cout<<"NO"<<'\n';
- //cout<<"test";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement