만드는 중입니다

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

정렬 기계

시간 제한1.5초메모리 제한2048 MB

요약
길이가 같은 N개의 문자열에서 A번부터 B번까지 문자열을 L번째부터 R번째 문자로 자른 뒤 정렬했을 때, X번 문자열의 위치를 구합니다.
난이도

어려움10점 중 8점

유형
문자열, 정렬, 이분 탐색, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

로봇 모건이 텍스트를 정렬할 수 있다는 것은 아드리안도 알고 있지만, 모건의 효율이 어느 정도인지는 확실하지 않다. 그래서 아드리안은 모건의 효율을 시험하기로 한다.

먼저 아드리안은 모건에게 길이가 같은 텍스트 NN개의 목록을 준다. 텍스트에는 1부터 NN까지 번호가 붙어 있다. 각 텍스트 SiS_i는 MM개의 문자로 이루어져 있으며, 문자 위치는 1부터 MM까지 번호로 표시된다. SijS_{ij}는 문자열 SiS_i의 jj번째 문자이다.

아드리안은 모건에게 QQ개의 작업을 준다. 각 작업은 다음 조건을 만족하는 튜플 (A,B,L,R,X)(A, B, L, R, X)이다.

  • 1≤A≤B≤N1 \le A \le B \le N
  • 1≤L≤R≤M1 \le L \le R \le M
  • 1≤X≤B−A+11 \le X \le B - A + 1

각 작업에서 모건은 다음 과정을 수행한다.

  1. 원래 텍스트 목록을 복사한다. 복사본을 TT라고 한다. 이 목록은 작업이 진행되는 동안 계속 갱신된다.
  2. A≤i≤BA \le i \le B 범위에 속하지 않는 텍스트 ii를 TT에서 모두 제거한다.
  3. TT에 남은 모든 텍스트에서 위치 jj가 L≤j≤RL \le j \le R 범위에 속하지 않는 문자를 모두 제거한다.
  4. TT에 남은 텍스트에 1부터 B−A+1B - A + 1까지 번호를 다시 붙인다. 그다음 TT에서 텍스트 XX를 표시한다.
  5. TT를 사전순으로 정렬하고, 그 결과를 T′T'라고 한다. 이때 정렬은 안정 정렬이다. 즉, 두 텍스트가 같으면 원래의 상대 순서를 유지한다.
  6. T′T'에서 표시된 텍스트의 위치를 출력한다. 사전순으로 가장 앞선 텍스트의 위치는 1이다.

아래 그림은 이 과정이 어떻게 진행되는지 보여준다.

모건이 이 작업들을 푸는 데는 많은 시간이 걸린다. 아드리안은 모건의 프로그램을 개선해서 작업을 빠르고 정확하게 풀 수 있게 해 달라고 요청한다.

길이가 nn인 문자열 ss가 같은 길이의 문자열 tt보다 사전순으로 작다는 것은, 모든 1≤j<i1 \le j < i에 대해 sj=tjs_j = t_j이고 si<tis_i < t_i인 인덱스 1≤i≤n1 \le i \le n이 존재한다는 뜻이다.

입력

첫 줄에는 두 정수 NN과 MM (1≤N,M≤1000001 \le N, M \le 100000; 1≤N×M≤1000001 \le N \times M \le 100000)이 주어진다. 이어지는 NN개의 줄에는 각각 길이 MM의 소문자 문자열 SiS_i가 주어진다.

다음 줄에는 작업의 개수 QQ (1≤Q≤1000001 \le Q \le 100000)가 주어진다. 이어지는 QQ개의 줄에는 각각 다섯 개의 정수 AA, BB, LL, RR, XX (1≤A≤B≤N1 \le A \le B \le N; 1≤L≤R≤M1 \le L \le R \le M; 1≤X≤B−A+11 \le X \le B - A + 1)가 주어진다.

출력

각 작업의 답을 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    5 6
    adrian
    morgan
    george
    undine
    stella
    5
    1 5 1 6 1
    1 5 1 6 2
    1 2 3 6 1
    2 4 3 5 3
    1 2 5 6 2
    
    예상 출력
    1
    3
    2
    1
    2
    
  2. 예제 2

    입력
    3 9
    indonesia
    nationaln
    contestco
    3
    2 2 1 9 1
    1 2 3 7 2
    1 3 2 5 2
    
    예상 출력
    1
    2
    1