만드는 중입니다

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

문자열 덮개

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

요약
문자열 w의 접두사마다 모든 위치를 덮는 가장 짧은 문자열의 길이를 구합니다.
난이도

보통10점 중 7점

유형
문자열 매칭, 동적 계획법
정답자
아직 제출이 없습니다

문제

문자열 α\alpha가 문자열 β\beta를 덮는다는 것은, β\beta의 모든 위치에 대해 그 위치를 포함하는 α\alpha의 출현이 β\beta의 부분 문자열로 존재한다는 뜻이다. 예를 들어 aba는 abaabaababa를 덮지만 baba는 덮지 못한다. 어떤 문자열이든 자기 자신을 덮는다는 것은 자명하다.

문자열 ww가 주어진다. 각 접두사 w[1..k]w[1..k]에 대해, 이를 덮는 가장 짧은 문자열을 구하시오.

입력

입력 파일에는 소문자 라틴 알파벳으로 이루어진 문자열 ww가 한 줄에 주어진다. ww의 길이는 250 000250\,000을 넘지 않는다.

출력

kk를 1부터 ww의 길이까지 바꾸면서, 각 kk에 대해 w[1..k]w[1..k]를 덮는 가장 짧은 문자열의 길이를 출력하시오.

예제1

  1. 예제 1

    입력
    abaabaababa
    
    예상 출력
    1 2 3 4 5 3 4 5 3 10 3