만드는 중입니다

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

문자열 순위

시간 제한0.5초메모리 제한2048 MB

요약
길이가 최대 3×10^6인 문자열 w가 주어질 때, 모든 접미사의 길이 t 이하 부분수열 집합이 서로 다르게 되는 가장 작은 t를 구합니다.
난이도

어려움10점 중 8점

유형
문자열, 그리디, 구현
정답자
아직 제출이 없습니다

문제

소문자 영어 알파벳으로 이루어진 문자열 ww와 uu가 있다. 정수 수열 i1,⋯ ,iki_1, \cdots, i_k가 엄격하게 증가하고, ∣w∣=n|w| = n, ∣u∣=k|u| = k이며, 모든 j=1,…,kj = 1, \dots, k에 대해 u[j]=w[ij]u[j] = w[i_j]이면 uu를 ww의 부분 수열이라고 한다. v[i]v[i]는 문자열 vv의 ii번째 문자이다. w[i:]w[i:]는 접미 문자열 w[i]⋯w[n]w[i] \cdots w[n]을 뜻하고, i>ni > n이면 w[i:]w[i:]는 빈 문자열 λ\lambda이다.

비어 있지 않은 문자열 ww와 양의 정수 kk에 대해, ww의 kk-집합 Qk(w)Q_k(w)는 길이가 0,1,⋯ ,k0, 1, \cdots, k인 ww의 부분 수열 전체의 집합이다. 이 정의에 따라 빈 문자열 λ\lambda는 항상 Qk(w)Q_k(w)에 속한다.

예를 들어 ww가 aaba일 때, Q3(aaba)={λ,a,b,ba,ab,aa,aba,aab,aaa}Q_3(\text{aaba}) = \{\lambda, \text{a}, \text{b}, \text{ba}, \text{ab}, \text{aa}, \text{aba}, \text{aab}, \text{aaa}\}이다.

ww의 순위는 ww의 모든 접미 문자열의 tt-집합이 서로 모두 다르게 되는 최소의 정수 tt이다. 형식적으로는 min⁡{t≥1∣Qt(w[i:])≠Qt(w[j:]) 모든 1≤i<j≤n 에 대해}\min\{t \ge 1 \mid Q_t(w[i:]) \ne Q_t(w[j:]) \text{ 모든 } 1 \le i < j \le n \text{ 에 대해}\}이다.

예를 들어 ww가 aaba일 때, Q2(aba)Q_2(\text{aba})와 Q2(aaba)Q_2(\text{aaba})는 같다. t=3t = 3일 때 접미 문자열의 집합은 Q3(λ)={λ}Q_3(\lambda) = \{\lambda\}, Q3(a)={λ,a}Q_3(\text{a}) = \{\lambda, \text{a}\}, Q3(ba)={λ,a,b,ba}Q_3(\text{ba}) = \{\lambda, \text{a}, \text{b}, \text{ba}\}, Q3(aba)={λ,a,b,ba,ab,aa,aba}Q_3(\text{aba}) = \{\lambda, \text{a}, \text{b}, \text{ba}, \text{ab}, \text{aa}, \text{aba}\}, Q3(aaba)={λ,a,b,ba,ab,aa,aba,aab,aaa}Q_3(\text{aaba}) = \{\lambda, \text{a}, \text{b}, \text{ba}, \text{ab}, \text{aa}, \text{aba}, \text{aab}, \text{aaa}\}이다. 다섯 집합이 모두 다르므로 aaba의 순위는 3이다.

입력

입력은 소문자 영어 알파벳으로만 이루어진 비어 있지 않은 문자열 ww 하나이다. ww의 길이는 3×1063 \times 10^6 이하이다.

출력

정확히 한 줄에 ww의 순위 tt를 양의 정수로 출력한다.

예제4

  1. 예제 1

    입력
    aabbb
    
    예상 출력
    3
    
  2. 예제 2

    입력
    abacb
    
    예상 출력
    2
    
  3. 예제 3

    입력
    azadzzadaz
    
    예상 출력
    4
    
  4. 예제 4

    입력
    a
    
    예상 출력
    1