Trong hệ thống máy tính lượng tử của tương lai, dữ liệu được mã hóa dưới dạng các chuỗi ký tự đặc biệt, chủ yếu sử dụng các ký hiệu ngoặc đơn. Một chuỗi được coi là Hợp lệ (Valid) nếu nó thỏa mãn các quy tắc cân bằng nghiêm ngặt.
Một Dãy Ngoặc Đúng (Correct Bracket Sequence - CBS) hay còn gọi là Dãy Ngoặc Hợp Lệ, được định nghĩa đệ quy như sau:
- Chuỗi rỗng (
"") là một Dãy Ngoặc Đúng. - Nếu \(S\) là một Dãy Ngoặc Đúng, thì chuỗi \((\text{S})\) cũng là một Dãy Ngoặc Đúng.
- Nếu \(S\) và \(T\) đều là Dãy Ngoặc Đúng, thì chuỗi \(ST\) (nối \(S\) và \(T\)) cũng là một Dãy Ngoặc Đúng.
- Mọi Dãy Ngoặc Đúng chỉ có thể được xây dựng từ các quy tắc trên.
Ví dụ: ()(), (()), "" là các Dãy Ngoặc Đúng; nhưng )(, ((), )(() thì không.
Bạn được giao một chuỗi \(S\) chỉ chứa các ký tự ngoặc đơn '(' và ')' có độ dài \(N\). Nhiệm vụ của bạn là kiểm tra xem chuỗi \(S\) có phải là một Dãy Ngoặc Đúng hay không.
Input
- Dòng đầu tiên chứa số nguyên \(N\) (\(1 \le N \le 10^6\)) --- độ dài của chuỗi.
- Dòng thứ hai chứa chuỗi \(S\) có độ dài \(N\), chỉ bao gồm các ký tự
'('và')'.
Output
In ra YES nếu chuỗi \(S\) là một Dãy Ngoặc Đúng. Ngược lại, in ra NO.
Example
Test 1
Input
2
()
Output
YES
Test 2
Input
6
(())()
Output
YES
Test 3
Input
5
()(((
Output
NO
Test 4
Input
6
(())))
Output
NO
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.