Dãy ngoặc đúng bậc k

Xem dạng PDF

Thông tin
Nguồn bài: Chuyên đề Quy hoạch động — Bài tập (tài liệu người dùng cung cấp)
Chi tiết
Dạng bài
Điểm: 100,00 (OI)
Giới hạn thời gian: 3.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Cho xâu S chỉ gồm các ký tự (, ) và số nguyên k. Đánh dấu một số vị trí trên xâu, rồi xóa các ký tự ở những vị trí đã đánh dấu. Đếm số cách đánh dấu sao cho xâu còn lại là dãy ngoặc đúng bậc đúng bằng k. Có thể không đánh dấu vị trí nào. Hai cách khác nhau nếu tập vị trí được đánh dấu khác nhau, kể cả khi chúng tạo ra cùng một xâu.

Dãy rỗng có bậc 0. Nếu A là dãy ngoặc đúng bậc h thì (A) có bậc h + 1. Nếu A, B là hai dãy ngoặc đúng bậc h₁, h₂ thì AB có bậc max(h₁, h₂). Tương đương, bậc là độ sâu lồng ngoặc lớn nhất.

Dữ liệu vào

Dòng đầu chứa k.

Dòng thứ hai chứa S (1 ≤ k ≤ |S| ≤ 5000).

Kết quả

Số cách đánh dấu, lấy dư cho 10⁹ + 7.

Ví dụ

Input

1
())

Output

2

Đọc dữ liệu từ đầu vào chuẩn và ghi kết quả ra đầu ra chuẩn. Mỗi test được chấm độc lập.


Bình luận

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


Không có bình luận tại thời điểm này.