Xóa xâu

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ớ: 1G Input: bàn phím Output: màn hình

Cho một xâu chỉ gồm \(n\) chữ cái thường từ a tới z. Giá trị của một xâu là độ dài của xâu con liên tiếp dài nhất không rỗng chỉ chứa đúng \(1\) ký tự. Ví dụ giá trị của xâu abbac\(2\) vì có bb là xâu con liên tiếp chỉ chứa ký tự b. Bạn được quyền xóa không, một hoặc một số ký tự bất kỳ trong xâu và giữ nguyên thứ tự các ký tự còn lại sao cho sau khi xóa xâu vẫn còn ít nhất một ký tự và số lượng ký tự riêng biệt bị xóa đi không vượt quá \(k\). Hãy tìm giá trị lớn nhất có thể của xâu cho trước.

Lưu ý: Khi xóa một kí tự, ta xóa tất cả các lần xuất hiện của nó

Input

  • Dòng đầu tiên chứa 2 số nguyên dương \(n\)\(k\) (\(k \leq 25, n \leq 2 \times 10^6\)) lần lượt là độ dài xâu và số lượng ký tự riêng biệt tối đa xóa được.
  • Dòng đầu tiên duy nhất chứa xâu ký tự nêu trên. Dữ liệu đảm bảo xâu chỉ gồm các chữ cái thường từ a tới z.

Output

  • Gồm một số nguyên duy nhất là giá trị lớn nhất có thể của xâu đã cho.

Scoring

  • Subtask \(1\): \(k = 1, n \leq 2 \times 10^6\).
  • Subtask \(2\): \(k = 25, n \leq 2 \times 10^6\).
  • Subtask \(3\): \(k \leq 25, n \leq 20\).
  • Subtask \(4\): \(k \leq 25, n \leq 2 \times 10^4\).
  • Subtask \(5\): Không ràng buộc gì thêm.

Example

Test 1

Input
7 1
acadaba
Output
2
Note
  • Ta có thể bỏ ký tự c ở vị trí thứ \(2\) để được xâu aadaba và được giá trị của xâu mới là \(2\). Ta cũng có thể bỏ ký tự d ở vị trí thứ \(4\) để được xâu acaaba có giá trị là \(2\).

Bình luận (1)

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