만드는 중입니다

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

배열 조인

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

요약
A와 B에서 각각 비어 있지 않은 부분수열을 골라 위치를 섞어 만든 길이 k의 배열 중 사전순으로 가장 작은 것을 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 문자열
정답자
아직 제출이 없습니다

문제

정수 배열 A=[a1,a2,…,an]A = [a_1, a_2, \ldots, a_n]과 B=[b1,b2,…,bm]B = [b_1, b_2, \ldots, b_m]이 주어진다. AA와 BB의 kk-join은 길이가 kk인 배열 중 사전순으로 가장 작은 배열 RR이다. RR은 비어 있지 않은 두 부분수열로 나눌 수 있는데, 첫 번째는 AA의 부분수열이고 두 번째는 BB의 부분수열이다.

형식적으로는 다음 조건을 만족하는 R=[r1,r2,…,rk]R = [r_1, r_2, \ldots, r_k]를 찾아야 한다. 비어 있지 않은 인덱스 수열 1≤i1,1<i1,2<…<i1,t≤n1 \le i_{1,1} < i_{1,2} < \ldots < i_{1,t} \le n과 1<j1,1<j1,2<…<j1,k−t≤m1 < j_{1,1} < j_{1,2} < \ldots < j_{1,k-t} \le m이 있고, 인덱스 수열 1≤i2,1<i2,2<…<i2,t≤k1 \le i_{2,1} < i_{2,2} < \ldots < i_{2,t} \le k와 1≤j2,1<j2,2<…<j2,k−t≤k1 \le j_{2,1} < j_{2,2} < \ldots < j_{2,k-t} \le k가 있어서 다음이 성립해야 한다.

  • 모든 1≤p≤t1 \le p \le t, 1≤q≤k−t1 \le q \le k - t에 대해 i2,p≠j2,qi_{2,p} \ne j_{2,q}이다.
  • 모든 1≤p≤t1 \le p \le t에 대해 ai1,p=ri2,pa_{i_{1,p}} = r_{i_{2,p}}이다.
  • 모든 1≤p≤k−t1 \le p \le k - t에 대해 bj1,p=rj2,pb_{j_{1,p}} = r_{j_{2,p}}이다.

예를 들어 A=[1,2,1,3,1,2,1]A = [1, 2, 1, 3, 1, 2, 1], B=[1,2,3,1]B = [1, 2, 3, 1], k=9k = 9이면 kk-join은 R=[1,1,1,1,2,1,2,3,1]R = [1, 1, 1, 1, 2, 1, 2, 3, 1]이다(첫 번째 배열에서 온 부분수열은 [1,1,1,2,1][1, 1, 1, 2, 1], 두 번째 배열에서 온 부분수열은 [1,2,3,1][1, 2, 3, 1]).

주어진 두 배열 AA, BB와 정수 kk에 대해 kk-join RR을 구하라.

입력

첫 번째 줄에 배열 AA의 길이 nn이 주어진다 (1≤n≤30001 \le n \le 3000).

두 번째 줄에 AA의 원소 aia_i가 nn개 주어진다 (1≤ai≤30001 \le a_i \le 3000).

세 번째 줄에 배열 BB의 길이 mm이 주어진다 (1≤m≤30001 \le m \le 3000).

네 번째 줄에 BB의 원소 bib_i가 mm개 주어진다 (1≤bi≤30001 \le b_i \le 3000).

마지막 줄에 정수 kk가 주어진다 (2≤k≤n+m2 \le k \le n + m).

출력

주어진 배열의 kk-join을 출력한다.

예제1

  1. 예제 1

    입력
    7
    1 2 1 3 1 2 1
    4
    1 2 3 1
    9
    
    예상 출력
    1 1 1 1 2 1 2 3 1