2012年7月4日水曜日

AOJ Volume11 1173: The Balance of the World

指定された括弧以外は無視していく。

/************************************************
*    2012/06/30                                    *
*    AOJ_Volume11_1173_                            *
*    The_Balance_of_the_World                    *
*    crane                                        *
*************************************************/

#include<iostream>
#include<string>
#include<stack>
using namespace std;


string input;

int main(){

    while(getline(cin, input)){
        stack<char> str;
        if(input.at(0) == '.')    break;

        bool frag = true;
        int i=0;
        while(1){
            if(!frag)    break;

            char c = input.at(i);
            i++;
            if(c == '.')    break;

            switch(c){
            case '(':
            case '[':
                str.push(c);
                break;
            case ')':
            case ']':
                if(!str.empty()){
                    char c2 = str.top();
                    str.pop();
                    if(c2 == '(' && c == ']')
                        frag = false;
                    else if(c2 == '[' && c == ')')
                        frag = false;
                }else{
                    frag = false;
                }
                break;
            }
        }
        if(frag&& str.empty()) cout << "yes" << endl;
        else                   cout << "no" << endl;
    }
    return 0;
}

0 件のコメント:

コメントを投稿