병합 (Merge)
면접 대비시간 제한2초메모리 제한512 MB
정렬된 두 수열을 주어진 규칙으로 합친다. 맨 앞 원소가 같으면 A에서 먼저 꺼내 하나의 수열로 만든다.
문제
길이가 N인 양의 정수열 A=(A1, A2, ..., AN)과 길이가 M인 양의 정수열 B=(B1, B2, ..., BM)가 주어진다. 두 수열은 모두 비감소 수열이다. 즉, A1 ≦ A2 ≦ … ≦ AN, B1 ≦ B2 ≦ … ≦ BM을 만족한다.
다음 알고리즘으로 두 수열에서 길이가 N+M인 양의 정수열 C=(C1, C2, ..., CN+M)를 생성한다.
- 처음에
C는 비어 있다. A와B가 모두 비어 있으면 종료한다.A와B중 하나만 비어 있으면 비어 있지 않은 수열을t로 둔다. 둘 다 비어 있지 않으면 맨 앞 원소가 더 작은 수열을t로 둔다. 단,A와B의 맨 앞 원소가 같은 값이면A를t로 둔다.t의 맨 앞 원소를C의 맨 뒤에 추가한다.t의 맨 앞 원소를 삭제한다.- 2번으로 돌아간다.
비감소 양의 정수열 A, B가 주어졌을 때, 이 알고리즘으로 생성되는 양의 정수열 C를 출력하는 프로그램을 작성하시오.
입력
입력은 다음 형식으로 표준 입력에서 주어진다.
N M
A1 A2 … AN
B1 B2 … BM
출력
표준 출력에 N + M줄을 출력한다.
k번째 줄 (1 ≦ k ≦ N + M)에는 Ck를 출력한다.
제한
1 ≦ N ≦ 500.1 ≦ M ≦ 500.1 ≦ A1 ≦ A2 ≦ … ≦ AN ≦ 2000.1 ≦ B1 ≦ B2 ≦ … ≦ BM ≦ 2000.