만드는 중입니다

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

부분수열이 아닌 수열

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

요약
1부터 k까지의 정수로 된 두 수열이 주어질 때, 두 수열 어느 쪽의 부분수열도 아닌 가장 짧은 수열을 구합니다.
난이도

보통10점 중 6점

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

문제

수열 X=[x1,x2,…,xt]X = [x_1, x_2, \ldots, x_t]가 수열 Y=[y1,y2,…,ys]Y = [y_1, y_2, \ldots, y_s]의 부분수열이라는 것은 YY에서 일부 원소(하나도 없을 수 있음)를 지워 XX를 만들 수 있다는 뜻이다. 다시 말해, 1≤i1<i2<…<it≤s1 \le i_1 < i_2 < \ldots < i_t \le s를 만족하는 인덱스 수열이 있어서, 11부터 tt까지의 모든 jj에 대해 xj=yijx_j = y_{i_j}가 성립한다. 예를 들어 [1,2,3,2][1, 2, 3, 2]는 [1,1,2,2,1,3,2,1][\mathbf{1}, 1, \mathbf{2}, 2, 1, \mathbf{3}, \mathbf{2}, 1]의 부분수열이지만, [1,2,3,1,2][1, 2, 3, 1, 2]는 그렇지 않다.

1부터 kk까지의 정수로 이루어진 두 수열 A=[a1,…,am]A = [a_1, \ldots, a_m]와 B=[b1,…,bn]B = [b_1, \ldots, b_n]이 주어진다. AA의 부분수열도 아니고 BB의 부분수열도 아닌, 길이가 가장 짧은 수열 C=[c1,…,cp]C = [c_1, \ldots, c_p]를 구하라. CC의 원소 역시 1부터 kk까지의 정수여야 한다.

입력

첫 줄에 원소의 최댓값 kk (1≤k≤5 0001 \le k \le 5\,000)가 주어진다. 둘째 줄에 AA의 길이 mm (1≤m≤5 0001 \le m \le 5\,000)이 주어지고, 셋째 줄에 AA의 원소 mm개가 주어진다. 넷째 줄에 BB의 길이 nn (1≤n≤5 0001 \le n \le 5\,000)이 주어지고, 다섯째 줄에 BB의 원소 nn개가 주어진다.

출력

첫 줄에 pp를 출력한다. 둘째 줄에 수열 CC를 출력한다. 최적해가 여러 개라면 그중 아무 것이나 출력한다.

예제1

  1. 예제 1

    입력
    2
    5
    1 2 1 2 1
    5
    2 1 2 1 2
    
    예상 출력
    4
    1 1 1 1