HackDream Orange 02-C: Dãy không tăng

Xem PDF

Nộp bài

Điểm: 100 (thành phần)
Thời gian: 1.0s
Python 2 5.0s
Bộ nhớ: 256M
Input: bàn phím
Output: màn hình

Tác giả:
Dạng bài

Cho 2 dãy số nguyên ~A~ và ~B~, mỗi dãy đều có đúng ~n~ phần tử. Hãy tìm cách chọn và ghép các số từ 2 dãy ~A~ và ~B~ để tạo ra dãy ~C~ sao cho:

  • Dãy ~C~ là dãy không tăng.
  • Không có hai phần tử liên tiếp trong dãy ~C~ vốn là thuộc cùng 1 dãy (hai phần tử liên tiếp phải có 1 phần tử được chọn từ dãy ~A~, 1 phần tử được chọn ra từ dãy ~B~).

Yêu cầu

Cho hai dãy số ~A~ và ~B~. In ra dãy số ~C~ dài nhất có thể tạo ra được bằng cách sử dụng các phần tử của hai dãy ~A~ và ~B~.

Input

  • Dòng đầu tiên chứa số nguyên dương ~n~ ~(1≤n≤10^6)~.
  • Dòng thứ hai chứa ~n~ số nguyên dương ~a_i~ là giá trị các phần tử thuộc dãy ~A~ ~(1≤a_i≤10^9)~, cách nhau một dấu cách.
  • Dòng thứ hai chứa ~n~ số nguyên dương ~b_i~ là giá trị các phần tử thuộc dãy ~B~ ~(1≤b_i≤10^9)~, cách nhau một dấu cách.

Output

Một dòng duy nhất là kết quả bài toán. Nếu có nhiều dãy có cùng độ dài lớn nhất, in ra dãy có thứ tự từ điển lớn nhất.

Sample Input

4
3 3 5 7
2 4 6 8

Sample Output

8 7 6 5 4 3 2

Sample Input

3
1 3 2
2 1 3

Sample Output

3 3 2 2 1 1

Subtask

  • Có 50% số test ứng với 50% số điểm có ~1≤n≤10~;
  • 50% số test còn lại tương ứng với 50% số điểm không có giới hạn gì thêm.

Bình luận đầu tiên

Bình luận

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