Sereja và dãy ngoặc
Đề bài
Mô tả
Cho một dãy ngoặc độ dài , gồm các ký tự "(" và ")".
Bạn cần trả lời truy vấn. Mỗi truy vấn cho hai số nguyên và (). Với mỗi truy vấn, hãy tìm độ dài của dãy ngoặc con đúng dài nhất của đoạn .
Một dãy con của thu được bằng cách xóa đi một số ký tự (có thể không xóa) và giữ nguyên thứ tự các ký tự còn lại.
Một dãy ngoặc đúng là dãy có thể biến thành một biểu thức số học hợp lệ bằng cách chèn thêm "1" và "+". Ví dụ, "()()" và "(())" là đúng, còn ")(" và "(" thì không.
Dữ liệu vào
- Dòng đầu chứa dãy ký tự , mỗi ký tự là "(" hoặc ")".
- Dòng thứ hai chứa số nguyên , số lượng truy vấn.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên và , mô tả truy vấn thứ .
Dữ liệu ra
In ra dòng, dòng thứ là đáp án của truy vấn thứ theo đúng thứ tự trong dữ liệu vào.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| ())(())(())( 7 1 1 2 3 1 2 1 12 8 12 5 11 2 10 |
0 0 2 10 4 6 6 |
Truy vấn 3 (đoạn "()"): dãy con đúng dài nhất là "()", độ dài 2. Truy vấn 4 (cả xâu): dãy con đúng dài nhất là "()(())(())", độ dài 10. |
| )( 1 1 2 |
0 | Đoạn ")(" không chứa dãy ngoặc đúng nào khác rỗng, đáp án là 0. |
Bình luận