LKNGOAC - Liệt kê cặp dấu ngoặc

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Cho dãy ngoặc đúng gồm ~n~ dấu mở ngoặc ( và ~n~ dấu đóng ngoặc ). Các dấu ngoặc được đánh số thứ tự từ ~1~ đến ~2n~. Hãy liệt kê chỉ số của các cặp dấu mở ngoặc và đóng ngoặc tương ứng.

Input

  • Gồm một dòng duy nhất chứa xâu ký tự biểu diễn dãy ngoặc.

Giới hạn:

  • ~1 ≤ n ≤ 10^5~.

Output

  • Gồm ~n~ dòng, mỗi dòng gồm hai số ~u, v~ là chỉ số của các cặp ngoặc tương ứng nhau, thứ tự liệt kê tăng dần theo chỉ số của dấu ngoặc đóng.

Sample

Input #1
()(()())
Output #1
1 2
4 5
6 7
3 8

Problem source: Chuyên Sơn La Online Judge


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 1
    gtmailong  đã bình luận lúc 27, Tháng 4, 2024, 22:43

    full ac

    #include <iostream>
    
    using namespace std;
    int main(){
        string s;
        long Stack[10005];
        cin >> s;
        int T = -1;
        for (char p : s) {
            if (p == '(') ++T;
            else {
                int pos = T+1;
                while (s[T] != '(') T--;
                s[T] = ')';
                cout << T+1 << ' ' << pos+1 << '\n';
                T = pos;
            }
        }
        return 0;
    }