和括号匹配一样,左括号压栈右括号与栈顶的左括号匹配出栈,如果中间无法与右括号匹配或最后A有剩余,即为Bad。
#include <bits/stdc++.h>


using namespace std;


int main() {
    stack<int> st;
    string s;
    cin>>s;
    for (int i=0;i<s.size();i++) {
        if (s[i]=='a') {
            st.push('a');
        } else {
            if (st.empty()||st.top()!='a') {
                cout<<"Bad"<<endl;
                return 0;
            }
            st.pop();
        }
    }
    if (!st.empty()) {
        cout<<"Bad"<<endl;
        return 0;
    }
    cout<<"Good"<<endl;
    return 0;
}