Dãy ngoặc (C.P.VNOI 2021 LMH R13)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1500 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Một dãy ngoặc đúng là một xâu gồm các ký tự (, ), [, ], { và } định nghĩa như sau:

  • Xâu rỗng (không có ký tự nào) là một dãy ngoặc đúng
  • Nếu \(A\) và \(B\) là hai dãy ngoặc đúng thì \(AB\) (xâu tạo thành bằng cách lấy xâu \(A\) nối vào trước xâu \(B\)) cũng là một dãy ngoặc đúng
  • Nếu \(A\) là một dãy ngoặc đúng thì (A), [A] và {A} cũng là những dãy ngoặc đúng
  • Những xâu không thành lập được theo quy tắc trên không phải là dãy ngoặc đúng

Ví dụ {[()()[]()]}() là một dãy ngoặc đúng nhưng [(]) và }}}{{{ không phải là những dãy ngoặc đúng.

Yêu cầu: Cho xâu ký tự \(S\) có độ dài không quá \(300\) và chỉ gồm các ký tự: ()[]{}, hãy xóa đi một số ít nhất các ký tự trong \(S\) để được một dãy ngoặc đúng, cho biết số ký tự phải xóa.

Input

  • một dòng chứa xâu \(S\)

Output

  • Ghi ra số ký tự phải xóa

Example

Test 1

Input
}}}][[[
Output
7

Test 2

Input
{[()()[]}[]()]}()
Output
1

Test 3

Input
{[(}[]]) 
Output
4

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.