Dãy ngoặc hỏng

Đề bài

Mô tả

Cho một dãy ngoặc s độ dài n, chỉ gồm hai kí tự "(" và ")".

Một dãy ngoặc được gọi là đúng nếu:

  • Dãy rỗng là đúng;
  • Nếu t là dãy đúng thì "(" + t + ")" cũng là dãy đúng;
  • Nếu t1t2 là hai dãy đúng thì t1t2 (nối liền nhau) cũng là dãy đúng.

Ví dụ "(()())" và "()" là các dãy đúng, còn ")(" và "())" thì không.

Bạn được phép thực hiện nhiều nhất một thao tác: chọn một kí tự ngoặc bất kì rồi di chuyển nó tới một vị trí bất kì khác trong dãy (không được đổi chiều ngoặc, tức không được biến "(" thành ")" hay ngược lại).

Hãy xác định xem có thể làm cho dãy trở thành dãy ngoặc đúng bằng nhiều nhất một thao tác di chuyển hay không.

Dữ liệu vào

  • Dòng thứ nhất chứa số nguyên n — độ dài của dãy.
  • Dòng thứ hai chứa dãy ngoặc s độ dài n gồm các kí tự "(" và ")".

Dữ liệu ra

In ra "Yes" nếu có thể biến dãy thành dãy ngoặc đúng bằng nhiều nhất một thao tác di chuyển, ngược lại in ra "No".

Ràng buộc

  • 1n200000

Ví dụ

Input Output Giải thích
2
)(
Yes Di chuyển ngoặc đầu tiên xuống cuối dãy để được "()", là dãy ngoặc đúng.
3
(()
No Số ngoặc mở và ngoặc đóng không bằng nhau nên không thể tạo thành dãy đúng.
2
()
Yes Dãy đã đúng sẵn, không cần di chuyển.
10
)))))(((((
No Dù di chuyển một ngoặc cũng không thể sửa được dãy lệch quá nhiều.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0