Raccoon Contest 02 - Bắn pháo hoa
Xem dạng PDFĐêm giao thừa, thành phố tổ chức chương trình "bắn pháo hoa" theo một kịch bản được mã hóa thành chuỗi ký tự. Mỗi ký tự biểu diễn một hiệu ứng pháo (màu sắc, tầm cao, nhịp nổ...). Để tạo điểm nhấn, đạo diễn muốn chọn hai đoạn kịch bản không giao nhau, ghép lại theo đúng thứ tự, sao cho tạo thành một màn pháo đối xứng hoàn hảo giống như "phản chiếu" qua trục giữa.
Bạn được cho chuỗi ký tự ~S~ độ dài ~N~ được đánh số từ ~1~ đến ~N~. Nhiệm vụ của bạn là chọn hai đoạn con:
- ~S[l_1..r_1]~ và ~S[l_2..r_2]~
- thỏa ~1 \leq l_1 \leq r_1 < l_2 \leq r_2 \leq N~
Sau đó ghép lại tạo thành chuỗi mới ~T = S[l_1..r_1] + S[l_2..r_2]~ (các bạn lưu ý đọc kĩ đoạn này nhé).
Chuỗi ~T~ được gọi là "màn pháo đối xứng" nếu ~T~ là chuỗi đối xứng.
Yêu cầu: hãy tìm độ dài lớn nhất có thể của một chuỗi ~T~ như vậy. Nếu không thể tạo ra bất kỳ chuỗi ~T~ thỏa mãn nào, hãy in ra ~0~.
Input
- Dòng đầu tiên chứa số nguyên ~N~ ~(2 \leq N \leq 300\ 000)~ - độ dài của chuỗi.
- Dòng thứ hai chứa chuỗi ~S~ gồm ~N~ ký tự, mỗi ký tự là chữ cái latin viết thường.
Output
- In ra một số nguyên duy nhất là độ dài lớn nhất của chuỗi đối xứng ~T~ có thể tạo ra. Nếu không thể, in ra ~0~.
Scoring
| Subtask | Score | Additional Constraints |
|---|---|---|
| ~1~ | ~10\%~ | ~N \leq 50~ |
| ~2~ | ~10\%~ | ~N \leq 100~ |
| ~3~ | ~10\%~ | ~N \leq 300~ |
| ~4~ | ~10\%~ | ~N \leq 4000~ |
| ~5~ | ~30\%~ | ~N \leq 30000~ |
| ~6~ | ~30\%~ | No additional constraints |
Sample Input 1
7
abcbaba
Sample Output 1
5
Sample Input 2
5
abcde
Sample Output 2
0
Explanation
Một cách chọn tối ưu ở Sample 1 là:
- ~S[l_1..r_1] =~
abc. - ~S[l_2..r_2] =~
ba.
Ghép lại được ~T =~ abcba, là chuỗi đối xứng có độ dài ~5~.
Bình luận