아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

서로 다른 부분 문자열 쿼리 2

시간 제한1초메모리 제한512 MB

요약
문자를 덧붙이는 연산과 지금까지 만든 문자열의 서로 다른 부분 문자열 개수를 묻는 질의를 순서대로 처리한다.
난이도

어려움10점 중 8점

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

문제

비어 있는 문자열 SS가 있다. 다음 두 종류의 쿼리를 순서대로 수행하는 프로그램을 작성하시오.

  • c: SS의 맨 뒤에 문자 c를 추가한다. c는 알파벳 소문자이다.
  • ?: SS의 서로 다른 부분 문자열의 개수를 출력한다.

입력

첫째 줄에 문자열 QQ가 주어진다. QQ는 수행할 쿼리들을 순서대로 이어 붙인 문자열이다. QQ는 알파벳 소문자와 ?로만 이루어져 있으며 길이는 200 000200\,000을 넘지 않는다. QQ에 포함된 ?의 개수는 한 개 이상이다.

출력

?가 나올 때마다 SS의 서로 다른 부분 문자열의 개수를 한 줄에 하나씩 출력한다.

예제3

  1. 예제 1

    입력
    aba?
    
    예상 출력
    5
    
  2. 예제 2

    입력
    ?z?z?z?
    
    예상 출력
    0
    1
    2
    3
    
  3. 예제 3

    입력
    abc?abc?
    
    예상 출력
    6
    15