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

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

K번째 부분 문자열

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

요약
문자열 S가 주어질 때, 서로 다른 부분 문자열을 사전순으로 나열했을 때 K번째 부분 문자열을 묻는 질의에 답하고, 존재하지 않으면 -1을 출력한다.
난이도

어려움10점 중 8점

유형
문자열, 트라이, 동적 계획법, 정렬
정답자
아직 제출이 없습니다

문제

문자열 SS가 주어졌을 때, 다음 쿼리를 수행하려고 한다.

  • KK: SS의 서로 다른 부분 문자열을 사전 순으로 정렬했을 때, KK번째 오는 문자열을 출력한다.

S=S = "aaa"인 경우 부분 문자열은 "a", "a", "a", "aa", "aa", "aaa"가 있고, 서로 다른 부분 문자열은 "a", "aa", "aaa"가 있다.

입력

첫째 줄에 문자열 SS, 둘째 줄에 쿼리의 개수 QQ가 주어진다. 다음 QQ개의 줄에는 쿼리 KK가 한 줄에 하나씩 주어진다.

출력

각각의 쿼리마다 SS의 서로 다른 부분 문자열 중 사전 순으로 KK번째 오는 것을 한 줄에 하나씩 출력한다. KK번째 부분 문자열이 없는 경우에는 -1을 출력한다.

제한

  • 1≤∣S∣≤90,0001 \le |S| \le 90{,}000
  • 1≤Q≤5001 \le Q \le 500
  • 0<K<2310 < K < 2^{31}

예제1

  1. 예제 1

    입력
    aaa
    2
    2
    3
    
    예상 출력
    aa
    aaa