만드는 중입니다

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

두유노팰린드롬?

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

요약
길이가 최대 10^6인 소문자 문자열 S가 주어질 때, 각 질의 x번째 문자를 포함하는 회문 부분 문자열의 개수를 구합니다.
난이도

보통10점 중 7점

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

문제

문자열 SS가 주어진다. SS의 부분문자열 가운데 팰린드롬인 것을 부분팰린드롬이라 한다. 아래 질의를 처리하는 프로그램을 작성하시오.

  • xx: 문자열 SS의 xx번째 문자가 포함되는 부분팰린드롬의 개수를 출력한다.

입력

첫 번째 줄에 알파벳 소문자로 이루어진 문자열 SS가 주어진다. (1≤∣S∣≤106)(1 \leq |S| \leq 10^6)

두 번째 줄에 질의의 개수 QQ가 주어진다. (1≤Q≤2×105)(1 \leq Q \leq 2 \times 10^5)

세 번째 줄부터 QQ개의 줄에 걸쳐 질의가 한 줄에 하나씩 주어진다. (1≤x≤∣S∣)(1 \leq x \leq |S|)

출력

질의마다 결과를 질의가 주어진 순서대로 한 줄에 하나씩 출력한다.

힌트

팰린드롬은 앞에서 읽은 것과 뒤에서 읽은 것이 같은 문자열이다. 부분문자열은 문자열에서 연속된 일부를 뜻한다. 예를 들어 abcde는 abcdefe, eeabcde의 부분문자열이지만 abbccdde의 부분문자열은 아니다.

문자열 SS의 부분문자열 SlSl+1⋯Sr−1SrS_{l} S_{l+1} \cdots S_{r-1} S_{r}이 부분팰린드롬 TT이면, SiS_{i} (l≤i≤rl \leq i \leq r)는 부분팰린드롬 TT에 포함된다고 한다.

예제2

  1. 예제 1

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

    입력
    aeea
    4
    1
    2
    3
    4
    
    예상 출력
    2
    3
    3
    2