Lần đầu tiên tham dự đấu trường ICPC, Đại học Y dược Thành phố XYZ đã mời cuom1999 trở thành huấn luyện viên cho đội tuyển của trường. Không bỏ lỡ thời cơ tiếp cận lại "bạn" cũ TQPL, cuom1999 đã soạn ra hàng loạt bài tập lập trình về dãy số để có thể giảng giải cho đội tuyển YDS càng lâu càng tốt. Và sau một ngày dài thao thao bất tuyệt, cuom1999 kết thúc buổi tập huấn bằng việc nêu lời giải cho hai bài toán kinh điển: tìm dãy con tăng-giảm dài nhất của một dãy số (Longest Increasing Subsequence - LIS) và tìm dãy con chung dài nhất của hai dãy số (Longest Common Subsequence - LCS).
Tuy nhiên, TQPL vốn là một bạn nữ hết sức ham học và hiếu kỳ nên đã đặt câu hỏi cho cuom1999 về một bài toán tổng hợp hai ý tưởng trên lại với nhau cùng với một chút cải biên: Cho hai dãy số nguyên a1, a2,... am và b1, b2,... bn, hãy tìm hai dãy chỉ số tăng dần x1, x2,..., xp và y1, y2,...yq có độ dài bằng nhau sao cho:
1. ax1 = by1, ax2 = by2,..., axp = byq.
2. ax1 < ax2 > ax3 < ... hoặc ax1 > ax2 < ax3 > ... (tăng giảm xen kẽ nhau).
3. Độ dài hai dãy chỉ số là lớn nhất có thể.
Đầu óc của cuom1999 đã gần như "đóng băng" sau một buổi chiều căng thẳng và bồi hồi nên cậu ấy đành nhờ bạn giải quyết giúp bài toán trên. Bạn hãy giúp cuom1999 giữ thể diện với TQPL nhé!
Định dạng input:
- Dòng đầu chứa hai số nguyên dương m và n. Các số không vượt quá 1000.
- Dòng hai chứa m số nguyên không âm a1, a2,..., am. Các số không vượt quá 109.
- Dòng hai chứa n số nguyên không âm b1, b2,..., bn. Các số không vượt quá 109.
Định dạng output:
- Gồm một số nguyên duy nhất là độ dài của hai dãy chỉ số tìm được. Dữ liệu đảm bảo tồn tại ít nhất một dãy con chung cho hai dãy số a và b.