만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

암호 키

시간 제한2초메모리 제한1024 MB

요약
소문자로 이루어진 길이 500000 이하의 문자열 s가 주어집니다. 각 부분 문자열 t에 대해 |t| + f(t)^2의 최댓값을 구합니다. f(t)는 t의 진접두사이자 진접미사인 가장 긴 문자열의 길이입니다.
난이도

어려움10점 중 8점

유형
문자열, 문자열 매칭
정답자
아직 제출이 없습니다

문제

에르퀼 푸아로는 지금 미술품 밀수를 일삼는 국제 범죄 조직을 적발하고 있다. 푸아로와 협력하는 경찰이 곧 열릴 거래의 장소와 시간이 적힌 암호화된 편지를 가로챘다. 조직의 우두머리도 이 거래에 참석한다. 거래를 무산시키고 우두머리를 체포하려면 가로챈 편지를 해독해야 한다.

에르퀼은 암호의 키가 문자열 ss로부터 계산된다는 것을 알고 있다. 문자열 ww에 대해 f(w)f(w)를 ww와 같지 않으면서 ww의 접두사이기도 한 ww의 접미사 중 가장 긴 것의 길이로 정의하자. 예를 들어 f(‘abc‘)=0f(`abc`) = 0, f(‘abab‘)=2f(`abab`) = 2, f(‘aaa‘)=2f(`aaa`) = 2이다. 키는 ss의 모든 부분 문자열 tt에 대한 ∣t∣+f(t)2|t| + f(t)^2의 최댓값이다. 에르퀼이 키를 계산하도록 도와주자.

입력

첫 줄에 문자열 ss가 주어진다. ss는 소문자 라틴 알파벳으로만 이루어져 있다. (1≤∣s∣≤5000001 \le |s| \le 500000)

출력

암호의 키인 정수 하나를 출력한다.

예제1

  1. 예제 1

    입력
    ababaab
    
    예상 출력
    14