Cho dãy ~a~ gồm ~n~ số nguyên ~a_1, a_2, ..., a_n~.
Giá trị ~n~ được gọi là độ dài của dãy ~a~.
Dãy con của ~a~ là chính ~a~ hoặc là dãy nhận được từ dãy ban đầu bằng cách bỏ đi một số phần tử.
Dãy ~a~ được gọi là dãy không giảm nếu thỏa mãn: ~a_1 \le a_2 \le ... \le a_n~.
Ví dụ dãy: ~[2, 2, 4, 9, 3, 10]~ ta có một số dãy con như sau: ~[2, 2, 4, 10]~; ~[2, 9]~; ~[3, 2, 9, 10]~.
Trong đó, các dãy con ~[2, 2, 4, 10]~ và ~[2, 9, 10]~ được gọi là các dãy con không giảm.
Cho dãy ~a~ gồm ~n~ số nguyên, dãy ~b~ gồm ~m~ số nguyên. Dãy ~c~ được gọi là dãy con chung của hai dãy ~a~ và ~b~ nếu ~c~ vừa là dãy con của ~a~, vừa là dãy con của ~b~.
Ví dụ: Cho dãy ~a = (1, 2, 4, 9, 3)~ và dãy ~b = (0, 2, 15, 9)~. Dãy ~c = (2, 9)~ là một dãy con chung của hai dãy ~a~ và ~b~.
Yêu cầu: Cho hai dãy ~a~ và ~b~ chỉ chứa các số ~0~ và ~1~, dãy ~a~ có ~n~ phần tử, dãy ~b~ có ~m~ phần tử. Hãy xác định độ dài lớn nhất của dãy con chung không giảm của ~a~ và ~b~.
INPUT
Dòng đầu tiên chứa số nguyên dương ~n~ (~1 \le n \le 2 \times 10^5~) là số phần tử của dãy ~a~.
Dòng thứ hai chứa ~n~ số nguyên dương ~a_1, a_2, ..., a_n~ (~0 \le a_i \le 1~) là các phần tử của dãy ~a~.
Dòng thứ ba chứa số nguyên dương ~m~ (~1 \le m \le 2 \times 10^5~) là số phần tử của dãy ~b~.
Dòng thứ tư chứa ~m~ số nguyên dương ~b_1, b_2, ..., b_m~ (~0 \le b_i \le 1~) là các phần tử của dãy ~b~.
Dữ liệu đảm bảo luôn tồn tại dãy con chung.
OUTPUT
Độ dài lớn nhất của dãy con chung không giảm của hai dãy ~a~ và ~b~.
SAMPLE INPUT 1
7
0 0 0 1 0 1 1
6
0 0 1 1 0 1
SAMPLE OUTPUT 1
5
Dãy con chung không giảm dài nhất là ~0, 0, 1, 1, 1~.
SAMPLE INPUT 2
10
0 0 0 1 1 1 0 1 0 0
10
1 1 0 0 0 1 0 1 1 1
SAMPLE OUTPUT 2
7
SAMPLE INPUT 3
3
1 1 1
5
1 0 1 0 0
SAMPLE OUTPUT 3
2
SUBTASKS
Subtask | Điểm | Ràng buộc |
---|---|---|
1 | ~25~ | ~a_i = 1~, ~m, n \le 3000~. |
2 | ~25~ | ~m = n~, ~a_i = b_i~ |
3 | ~25~ | ~m, n \le 3000~ |
4 | ~25~ | Không có ràng buộc gì thêm. |
Bình luận