문제
알파벳 소문자로만 이루어진 문자열이 주어진다.
부분문자열의 "등장값" 이란 그 부분문자열이 등장하는 횟수와 부분문자열의 길이를 곱한 값이다.
문자열이 주어졌을 때, 팰린드롬이면서 가장 큰 등장값을 가지는 부분문자열을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 알파벳 소문자(a-z)로만 이루어진 문자열이 주어진다. 문자열의 길이는 300,000보다 작거나 같다.
출력
첫째 줄에 팰린드롬인 부분문자열 중에서 가장 큰 등장값을 출력한다.
예제
abacaba
7
예제의 경우에는 총 7개의 팰린드롬 부분문자열이 있다. a, b, c, aba, aca, bacab, abacaba.
a는 총 4번 등장하기 때문에, 등장값은 4 × 1 = 4
b는 총 2번 등장하기 때문에, 등장값은 2 × 1 = 2
c는 총 1번 등장하기 때문에, 등장값은 1 × 1 = 1
aba는 총 2번 등장하기 때문에, 등장값은 2 × 3 = 6
aca는 총 1번 등장하기 때문에, 등장값은 1 × 3 = 3
bacab는 총 1번 등장하기 때문에, 등장값은 1 × 5 = 5
abacaba는 총 1번 등장하기 때문에, 등장값은 1 × 7 = 7
가장 큰 등장값을 가지는 팰린드롬 부분문자열은 abacab이고, 등장값은 7이다.
힌트
출처
APIO 2014