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

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

또 다른 부분 문자열 질의 문제

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

요약
문자열 s와 패턴 t, 정수 k로 이루어진 질의가 주어질 때, s에서 t가 k번째로 나타나는 시작 위치를 구하고 k번 미만이면 -1을 출력한다.
난이도

어려움10점 중 8점

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

문제

문자열 ss와 여러 질의가 주어진다.

각 질의는 문자열 tt와 정수 kk로 이루어진다. 각 질의마다 ss에서 tt와 일치하는 부분 문자열이 시작하는 위치 중 kk번째 위치를 구한다. tt가 ss에서 kk번 미만으로 나타나면 −1을 출력한다.

입력

첫째 줄에 질의 대상 문자열 ss가 주어진다. (1≤∣s∣≤2⋅1051 \le |s| \le 2 \cdot 10^5) ss는 소문자로만 이루어져 있다.

둘째 줄에 질의의 개수 qq가 주어진다. (1≤q≤2⋅1051 \le q \le 2 \cdot 10^5)

다음 qq개 줄에는 각각 문자열 tt와 정수 kk가 주어진다. (1≤∣t∣1 \le |t|, 1≤k≤∣s∣1 \le k \le |s|) 이는 ss에서 tt가 나타나는 kk번째 위치를 묻는 질의이다. tt는 소문자로만 이루어져 있다. 모든 ∣t∣|t|의 합은 2⋅1052 \cdot 10^5 이하이다.

출력

ss에서 tt가 나타나는 kk번째 위치의 시작 지점을 나타내는 정수 하나를 출력한다. tt가 ss에서 kk번 미만으로 나타나면 −1을 출력한다. ss의 첫 번째 문자는 위치 1이다.

예제1

  1. 예제 1

    입력
    abacabadabacaba
    4
    a 7
    e 3
    bac 2
    abada 1
    
    예상 출력
    13
    -1
    10
    5