[Buổi 22][Cây đoạn cơ bản (Segment Tree)][ADV] Bài 1: Truy vấn ngoặc cân bằng trên đoạn


LÀM BÀI

Points: 100
Time limit: 3.0s
Memory limit: 256M

Author:
Problem types

Truy vấn ngoặc cân bằng trên đoạn

Bối cảnh và bài toán

Một chuỗi cấu hình chỉ gồm ( và ). Với mỗi đoạn con được hỏi, hệ thống cần xác định độ dài lớn nhất của một dãy con (giữ nguyên thứ tự nhưng có thể bỏ ký tự) tạo thành chuỗi ngoặc đúng.

Yêu cầu

Trả lời độc lập từng truy vấn đoạn.

Input

  • Dòng 1 chứa chuỗi s.
  • Dòng 2 chứa q.
  • q dòng tiếp theo chứa l r.

Output

Với mỗi truy vấn, in độ dài dãy con ngoặc đúng dài nhất nằm trong s[l..r].

Ràng buộc

  • 1 <= \|s\| <= 2 * 10^5
  • 1 <= q <= 10^5
  • 1 <= l <= r <= \|s\|

Chấm điểm

Subtask Điểm Điều kiện Official tests
S1 20% |s|, q <= 30 01–04
S2 30% |s|, q <= 5000 05–10
S3 50% Không có ràng buộc bổ sung 11–20

Ví dụ 1

Input

())(())(())(
4
1 1
1 12
5 11
2 10

Output

0
10
6
6

Giải thích. Mỗi đáp án là hai lần số cặp ngoặc có thể ghép theo đúng thứ tự.

Ví dụ 2

Input

)()(()
3
1 6
2 3
4 6

Output

4
2
2

Giải thích. Các ngoặc dư không bắt cặp được sẽ bị bỏ khỏi dãy con.

Thông tin bài tập

Thuộc tính Giá trị
Mã bài DSA-M07-B22-ADV01
Buổi B22
Loại bài ADVANCED
Mức độ khó Khó (Hard)
Thời gian làm bài khuyến nghị 75 phút
Time limit 3 giây
Memory limit 256 MB
Tổng điểm 100
Chuẩn ngôn ngữ tham chiếu C++11 trở lên
  • Yêu cầu ngoài OJ: nộp Decision Note theo template đi kèm.

Nguồn: Phỏng theo Codeforces 380C – Sereja and Brackets.


Comments

There are no comments at the moment.

Zalo