JOI 2020 - Merge

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 500 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cho dãy số nguyên dương \(A=(A_1,A_2,\ldots,A_N)\) có độ dài \(N\) và dãy số nguyên dương \(B=(B_1,B_2,\ldots,B_M)\) có độ dài \(M\). Cả hai dãy đều không giảm, nghĩa là \(A_1 \le A_2 \le \cdots \le A_N\)\(B_1 \le B_2 \le \cdots \le B_M\).

Dùng thuật toán sau để tạo dãy số nguyên dương \(C=(C_1,C_2,\ldots,C_{N+M})\) có độ dài \(N+M\) từ hai dãy trên:

  1. Ban đầu, \(C\) là dãy rỗng.
  2. Nếu cả \(A\)\(B\) đều rỗng thì kết thúc.
  3. Nếu chỉ một trong hai dãy \(A\)\(B\) rỗng, gọi dãy còn lại là \(t\). Nếu cả hai dãy đều không rỗng, gọi dãy có phần tử đầu nhỏ hơn là \(t\). Nếu hai phần tử đầu bằng nhau thì chọn \(t=A\).
  4. Thêm phần tử đầu của \(t\) vào cuối \(C\).
  5. Xóa phần tử đầu của \(t\).
  6. Quay lại bước 2.

Hãy viết chương trình nhận hai dãy số nguyên dương không giảm \(A, B\) và in ra dãy \(C\) được tạo bởi thuật toán trên.

Dữ liệu vào

Dữ liệu được cho từ đầu vào chuẩn theo định dạng sau:

N M
A_1 A_2 ... A_N
B_1 B_2 ... B_M

Dữ liệu ra

In ra \(N+M\) dòng. Dòng thứ \(k\) (\(1 \le k \le N+M\)) chứa \(C_k\).

Ràng buộc

  • \(1 \le N \le 500\).
  • \(1 \le M \le 500\).
  • \(1 \le A_1 \le A_2 \le \cdots \le A_N \le 2000\).
  • \(1 \le B_1 \le B_2 \le \cdots \le B_M \le 2000\).

Ví dụ

Ví dụ 1

Input
2 1
1 2
2
Output
1
2
2
Giải thích

Trước khi thực hiện thuật toán, \(A=(1,2)\)\(B=(2)\). Dãy \(C\) được tạo như sau:

  • Phần tử đầu của \(A\)\(1\), còn phần tử đầu của \(B\)\(2\). Thêm phần tử đầu của \(A\) vào \(C\) rồi xóa phần tử đó khỏi \(A\).
  • Phần tử đầu của cả \(A\)\(B\) đều bằng \(2\). Theo quy tắc khi hai giá trị bằng nhau, thêm phần tử đầu của \(A\) vào \(C\) rồi xóa phần tử đó khỏi \(A\).
  • Dãy \(A\) đã rỗng. Thêm phần tử đầu của \(B\) vào \(C\) rồi xóa phần tử đó khỏi \(B\).
  • Cả \(A\)\(B\) đều rỗng, nên thuật toán kết thúc.

Sau khi thuật toán kết thúc, \(C=(1,2,2)\).

Ví dụ 2

Input
3 8
1 3 8
3 3 4 5 6 7 8 9
Output
1
3
3
3
4
5
6
7
8
8
9

Nguồn

Bản dịch tiếng Việt từ đề gốc tiếng Nhật của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: