만드는 중입니다

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

미하일의 문제

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

요약
문자열 s와 여러 질의 구간 [l, r]이 주어질 때, 각 구간 s[l..r] 안에 있는 서로 다른 회문 부분 문자열의 개수를 구합니다.
난이도

어려움10점 중 8점

유형
문자열, 문자열 매칭, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

문자열 ss와 여러 개의 질의가 주어진다. ii번째 질의에서는 s[li..ri]s[l_i .. r_i]에 들어 있는 서로 다른 회문 부분 문자열의 개수를 구한다. 부분 문자열을 앞에서 읽으나 뒤에서 읽으나 같으면 회문이다. 두 부분 문자열이 문자열로서 다르면 서로 다른 것으로 본다.

입력

첫째 줄에 소문자 알파벳으로 이루어진 비어 있지 않은 문자열 ss가 주어진다. 길이는 10510^5 이하이다.

둘째 줄에 질의의 개수 qq (1≤q≤1051 \leq q \leq 10^5)가 주어진다. 이어지는 qq개의 줄에는 공백으로 구분된 두 정수 lil_i와 rir_i가 한 줄에 하나씩 주어진다 (1≤li≤ri≤∣s∣1 \leq l_i \leq r_i \leq |s|).

출력

qq개의 줄을 출력한다. ii번째 줄에는 ii번째 질의의 답을 출력한다.

예제1

  1. 예제 1

    입력
    bbabaabbcabcabc
    10
    1 7
    1 8
    1 9
    1 10
    2 7
    2 8
    2 9
    2 10
    7 15
    8 15
    
    예상 출력
    7
    7
    8
    8
    6
    7
    8
    8
    4
    3