[VTT Q4 Contest 10] Bài 3: Dãy dài nhất [MAXSEQ]
Xem dạng PDF
Gửi bài giải
Điểm:
3,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
MAXSEQ.INP
Output:
MAXSEQ.OUT
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, PyPy, Python
Cho hai dãy số ~a_1, a_2, \dots, a_n~ và ~b_1, b_2, \dots, b_m~. Hãy chọn một đoạn liên tiếp ~a_i, a_{i+1}, \dots, a_j~ của dãy ~a~ và một đoạn liên tiếp ~b_l, b_{l+1}, \dots, b_r~ của dãy ~b~, rồi nối đoạn của ~a~ vào trước đoạn của ~b~ sao cho dãy thu được là dãy không giảm:
~a_i \le a_{i+1} \le \dots \le a_j \le b_l \le b_{l+1} \le \dots \le b_r~
Yêu cầu: Tìm số phần tử lớn nhất có thể có của dãy nối được như vậy.
Dữ liệu
- Dòng thứ nhất chứa hai số nguyên dương ~n~ và ~m~ (~1 \le n, m \le 10^5~) lần lượt là số phần tử của dãy ~a~ và dãy ~b~.
- Dòng thứ hai chứa ~n~ số nguyên ~a_1 \le a_2 \le \dots \le a_n~ (~|a_i| \le 10^9~).
- Dòng thứ ba chứa ~m~ số nguyên ~b_1 \le b_2 \le \dots \le b_m~ (~|b_i| \le 10^9~).
Kết quả
In ra một số nguyên là độ dài lớn nhất của dãy nối từ hai đoạn của ~a~ và ~b~ thỏa mãn yêu cầu.
Ví dụ
MAXSEQ.INP
3 4
1 4 9
4 5 3 5
MAXSEQ.OUT
4
Giải thích: Lấy hai phần tử ~(1, 4)~ của dãy ~a~ nối với hai phần tử ~(4, 5)~ của dãy ~b~, được dãy ~(1, 4, 4, 5)~.
Giới hạn
- Subtask 1 (50% số điểm): dãy kết quả được ghép từ đoạn đầu của dãy ~a~ (~a_1 \le a_2 \le \dots \le a_i~) với đoạn cuối của dãy ~b~ (~b_j \le b_{j+1} \le \dots \le b_m~).
- Subtask 2 (30% số điểm): ~n, m \le 10^3~.
- Subtask 3 (20% số điểm): không có ràng buộc gì thêm.
Bình luận