Bạn cho trước một dãy ngoặc độ dài n, trong đó n là chẵn gồm n/2 ký tự mở ngoặc và n/2 ký tự đóng ngoặc.
Trong một lần di chuyển, bạn có thể chọn chính xác một dấu ngoặc và di chuyển nó đến đầu chuỗi hoặc đến cuối chuỗi (tức là bạn chọn một số chỉ mục i, loại bỏ ký tự thứ i của s và chèn nó vào trước hoặc sau khi tất cả còn lại. ký tự của s).
Nhiệm vụ của bạn là tìm số lần di chuyển tối thiểu cần thiết để có được chuỗi dấu ngoặc đúng từ s. Có thể chứng minh rằng câu trả lời luôn tồn tại dưới các ràng buộc đã cho.
Nhắc lại chuỗi dấu ngoặc đúng là:
Ví dụ: "() ()", "(()) ()", "(())" và "()" là các chuỗi dấu ngoặc đúng, nhưng ") (", "() (" và ")) )" không.
INPUT: MRACKETS.INP
OUTPUT: MRACKETS.OUT
MRACKETS.INP |
MRACKETS.OUT |
4 2 )( 4 ()() 8 ())()()( 10 )))((((()) |
1 0 1 3 |