2 条题解

  • 0
    @ 2025-1-15 14:13:52
    #include<iostream>
    #include<stack>
    #include<string>
    using namespace std;
    const int N = 5e4+10;
    int a[N],b[N];
    int main() {
        stack<char> stk;
        string st;
        cin >> st;
        int cnt = 0;
        bool flag = true;
        int cta = 1 , ctb = 1;
        for (int i = 0; i < st.size() ; i ++) {
            if(st[i] == ')'){
                if(stk.size() && stk.top() == '(') {
                    b[a[-- cta]] = i + 1;
                    //cout << cnt << " " << i+1 << endl;
                    stk.pop();
                }else{
                    flag = false;
                    //cout << "dd" << endl;
                    break;
                }
            }else {
                stk.push(st[i]);
                a[cta ++ ] = i + 1;
            }
        }
        if(stk.size()) flag = false;
        if(flag) {
            cout << "Yes" << endl;
            for(int i = 1; i <= st.size(); i ++) {
                if(b[i] != 0) cout << i << " " << b[i] << endl;
            }
        }else cout << "No";
        return 0;
    }
    
    

    信息

    ID
    138
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    139
    已通过
    30
    上传者