만드는 중입니다

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

두 수열

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

요약
A의 앞 a개 원소와 B의 앞 b개 원소를 합쳐 만들 수 있는 사전순 최소 수열에서 k번째 원소를 구합니다.
난이도

어려움10점 중 9점

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

문제

두 수열 X1,⋯ ,XsX_1, \cdots, X_s와 Y1,⋯ ,YtY_1, \cdots, Y_t가 주어진다. 비어 있는 수열 SS에서 시작하여 시행을 정확히 s+ts+t번 반복한다. 최종 상태의 SS가 될 수 있는 수열 중 사전순으로 가장 빠른 것을 X⋆YX \star Y로 정의한다.

시행은 다음 두 행동 중 하나이다.

  • XX가 비어 있지 않으면, XX의 맨 앞 원소를 제거하고 SS의 맨 뒤에 추가한다.
  • YY가 비어 있지 않으면, YY의 맨 앞 원소를 제거하고 SS의 맨 뒤에 추가한다.

길이가 NN인 정수 수열 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N과 길이가 MM인 정수 수열 B1,B2,⋯ ,BMB_1, B_2, \cdots, B_M이 주어진다.

다음 쿼리를 처리하는 프로그램을 작성하시오.

  • a b k: A[1..a]⋆B[1..b]A[1..a] \star B[1..b]의 kk번째 수를 출력한다.

입력

첫째 줄에 NN, MM, QQ가 공백으로 구분되어 주어진다. (1≤N,M,Q≤100 0001\le N,M,Q\le 100\,000)

둘째 줄에 A1A_1, A2A_2, ⋯\cdots, ANA_N이 공백으로 구분되어 주어진다. (1≤Ai≤1091\le A_i\le 10^9)

셋째 줄에 B1B_1, B2B_2, ⋯\cdots, BMB_M이 공백으로 구분되어 주어진다. (1≤Bi≤1091\le B_i\le 10^9)

이어서 QQ개의 줄에 쿼리 aa, bb, kk가 공백으로 구분되어 한 줄에 하나씩 주어진다. (1≤a≤N1\le a\le N; 1≤b≤M1\le b\le M; 1≤k≤a+b1\le k\le a+b)

출력

QQ개의 줄에 걸쳐 각 쿼리의 답을 입력 순서대로 출력한다.

예제1

  1. 예제 1

    입력
    5 4 9
    2 4 2 5 1
    2 4 1 3
    1 1 1
    5 4 3
    2 3 3
    5 1 6
    1 1 2
    5 1 3
    3 2 3
    3 3 3
    4 2 5
    
    예상 출력
    2
    4
    4
    1
    2
    4
    4
    4
    4