VOI20W01B3 - BRACKET-Dãy ngoặc
Dữ liệu vào: standard input
Dữ liệu ra: standard output
Giới hạn thời gian: 1.0 giây
Giới hạn bộ nhớ: 512 megabyte
Đăng bởi: admin

BRACKET-Dãy ngoặc

Một dãy ngoặc được hợp lệ là 1 chuỗi các kí tự chỉ bao gồm những kí tự ngoặc đóng, ngoặc mở và thỏa mãn một trong những điều kiện sau:

  1. Là dãy ngoặc rỗng
  2. Nếu nó có thể biểu diển dưới dạng (S), [S] và {S} với S là một dãy ngoặc hợp lệ
  3. Nếu nó là một chuỗi được tạo ra bằng cách ghép 2 dãy ngoặc hợp lệ. Ví dụ AB là dãy ngoặc hợp lệ thì AB cũng được coi là hợp lệ

Long được thầy cho 1 dãy ngoặc hợp lệ để học thuộc, nhưng vì quậy phá nên đã lở làm dính mực 1 vài kí tự trong dãy. Để phạt Long, thầy bắt Long phải đếm số cách có thể để tạo ra dãy ngoặc hợp lệ bằng cách thay thế những kí tự bị dính mực.

 

Bạn hãy giúp Long trả lời thầy nhé. Vì kết quả có thể rất lớn, nên bạn chỉ cần output ra 5 chữ số cuối của kết quả.

 

Dữ liệu vào:

Dòng đầu tiên là N (N<=200) thể hiện độ dài của dãy ngoặc.

Dòng lkfjddthứ 2 thể hiện dãy ngoặc với các kí tự ngoặc (, ), [, ], {, } và dấu ? thể hiện những kí tự bị lem mực.

 

Dữ liệu ra:

In ra 5 chữ số cuối của số cách có thể để tạo ra những dãy ngoặc hợp lệ từ dãy ngoặc lem mực ban đầu.

Ví dụ

Input

8
[{????)]

Output

10

Input

24
{[????[??????]})????????

Output

15106


Nguồn: Team PRACTICE VNOI'20

Back to Top