Bài 4. Xâu con tốt (THT B Khánh Hòa 2026)

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: 1800 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Cho một xâu \(s\) có độ dài \(n\), chỉ gồm các chữ cái in hoa từ A đến Z.

Một đoạn con liên tiếp \([l, r]\) của xâu được gọi là tốt nếu tồn tại một kí tự xuất hiện nhiều hơn một nửa độ dài đoạn đó.

Nói cách khác, gọi \(cnt(c, l, r)\) là số lần xuất hiện của kí tự \(c\) trong đoạn \([l, r]\). Đoạn \([l, r]\) là tốt nếu tồn tại một kí tự \(c\) sao cho:

\[cnt(c, l, r) > \frac{r - l + 1}{2}\]

Yêu cầu

Hãy tìm độ dài lớn nhất của một đoạn tốt trong xâu \(s\).

Input

  • Dòng đầu tiên chứa số nguyên dương \(n\) (\(1 \le n \le 10^5\)), là độ dài xâu.
  • Dòng thứ hai chứa xâu \(s\) có độ dài \(n\), chỉ gồm các chữ cái in hoa từ A đến Z.

Output

  • In ra một số nguyên duy nhất là độ dài lớn nhất của một đoạn tốt.

Example

Test 1

Input
7
AABBBCC
Output
5
Note

Chọn đoạn \([1, 5]\), tương ứng với xâu AABBB.
Trong đoạn này, kí tự B xuất hiện \(3\) lần, độ dài đoạn là \(5\). Vì \(3 > 5 / 2\), nên đây là một đoạn tốt.
Không có đoạn tốt nào có độ dài lớn hơn \(5\), nên đáp án là \(5\).

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(n \le 500\).
  • Subtask \(2\) (\(30\%\) số điểm): \(n \le 5000\).
  • Subtask \(3\) (\(30\%\) số điểm): Xâu \(s\) chỉ gồm hai kí tự AB.
  • Subtask \(4\) (\(20\%\) số điểm): Không có ràng buộc gì thêm.

Bình luận

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

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

Kỳ thi: