만드는 중입니다

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

문자열과 쿼리

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

요약
문자열 S에서 F(i)를 S의 접미사이자 S의 i번째 문자까지의 접두사인 가장 긴 문자열의 길이로 정의하고, M개의 질의에 답한다.
난이도

보통10점 중 7점

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

문제

길이가 NN인 문자열 S=S1S2⋯SNS = S_1 S_2 \cdots S_N이 주어진다. 함수 F(i)F(i)는 SS와 접두사 S1S2⋯SiS_1 S_2 \cdots S_i의 가장 긴 공통 접미사의 길이다.

예를 들어 SS가 zaaxbaacbaa이면 F(1)=0F(1) = 0, F(2)=1F(2) = 1, F(3)=2F(3) = 2이다.

문자열 SS와 쿼리 MM개가 주어졌을 때, 각 쿼리 ii에 대해 F(i)F(i)를 구하는 프로그램을 작성한다.

입력

첫째 줄에 문자열 SS가 공백 없이 한 줄로 주어진다. SS의 길이 NN은 1≤N≤1061 \le N \le 10^6이다.

둘째 줄에 쿼리의 개수 MM이 주어진다. (1≤M≤1051 \le M \le 10^5)

셋째 줄부터 MM개의 줄에 각 쿼리의 정수 ii가 한 줄에 하나씩 주어진다. (1≤i≤N1 \le i \le N)

출력

각 쿼리 ii에 대해 F(i)F(i)를 입력에 주어진 순서대로 한 줄에 하나씩 출력한다.

예제7

  1. 예제 1

    입력
    zaaxbaacbaa
    11
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    예상 출력
    0
    1
    2
    0
    0
    1
    3
    0
    0
    1
    11
    
  2. 예제 2

    입력
    a
    1
    1
    
    예상 출력
    1
    
  3. 예제 3

    입력
    aaaaaaaa
    8
    1
    2
    3
    4
    5
    6
    7
    8
    
    예상 출력
    1
    2
    3
    4
    5
    6
    7
    8
    
  4. 예제 4

    입력
    abcdefghij
    10
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    예상 출력
    0
    0
    0
    0
    0
    0
    0
    0
    0
    10
    
  5. 예제 5

    입력
    abababababab
    12
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    예상 출력
    0
    2
    0
    4
    0
    6
    0
    8
    0
    10
    0
    12
    
  6. 예제 6

    입력
    aabaabaabaa
    10
    11
    1
    7
    7
    2
    5
    5
    11
    3
    8
    
    예상 출력
    11
    1
    1
    1
    2
    5
    5
    11
    0
    8
    
  7. 예제 7

    입력
    mississippi
    11
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    예상 출력
    0
    1
    0
    0
    1
    0
    0
    1
    0
    0
    11