trang chủ / bài tập / bracksub

Dãy con ngoặc

Đề bài

Mô tả

Một dãy ngoặc là một xâu chỉ gồm các ký tự "(" và ")". Một dãy ngoặc đúng là dãy ngoặc có thể biến thành một biểu thức số học hợp lệ bằng cách chèn thêm các ký tự "1" và "+" vào giữa các ký tự của dãy. Ví dụ, "()()" và "(())" là các dãy ngoặc đúng (tương ứng với "(1)+(1)" và "((1+1)+1)"), còn ")(", "(" và ")" thì không.

Dãy con của một dãy là dãy thu được bằng cách xóa đi một số ký tự (có thể không xóa ký tự nào) mà không thay đổi thứ tự các ký tự còn lại.

Cho một dãy ngoặc đúng s và một số nguyên k. Hãy tìm một dãy ngoặc đúng có độ dài đúng bằng k sao cho nó đồng thời là một dãy con của s.

Dữ liệu đảm bảo luôn tồn tại một dãy như vậy. Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Dữ liệu vào

  • Dòng thứ nhất chứa hai số nguyên nk: độ dài của s và độ dài của dãy cần tìm.
  • Dòng thứ hai chứa xâu s: một dãy ngoặc đúng có độ dài n.

Dữ liệu ra

In ra một dãy ngoặc đúng độ dài đúng bằng k và là dãy con của s.

Ràng buộc

  • 2kn2·105, cả nk đều chẵn.

Ví dụ

Input Output Giải thích
6 4
()(())
()() Xóa cặp ngoặc trong cùng để còn lại độ dài 4. Đáp án khác như (()) cũng được chấp nhận.
8 8
(()(()))
(()(())) k=n nên phải lấy toàn bộ s.
20 10
((()))()((()()(())))
((()))()() Một dãy ngoặc đúng độ dài 10 là dãy con của s.

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 1.26.3 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