Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Pascal, Python
Cho dãy gồm ~n~ số tự nhiên ~a_1, a_2, a_3, ..., a_n~, các số ~a_i~ ~(1 \le i \le n)~ không quá ~m~ và có giá trị đôi một khác nhau, trong đó có đúng một số có giá trị bằng ~0~.
Yêu cầu
Thay thế số ~0~ thành một giá trị bất kì không được trùng với các giá trị đã có để nhận được một dãy con (các phần tử không nhất thiết nằm liên tiếp) có các giá trị liên tiếp dài nhất có thể.
Dữ liệu đầu vào
Gồm hai dòng:
- Dòng đầu ghi hai số nguyên ~m, n~ ~(1 \le n < m \le 10^6)~.
- Dòng thứ hai chứa ~n~ số tự nhiên đôi một khác nhau không lớn hơn ~m~.
Dữ liệu đầu ra
Gồm một số nguyên duy nhất là độ dài của dãy con có giá trị liên tiếp dài nhất có thể đạt được sau khi thay đổi giá trị của số ~0~.
Ràng buộc dữ liệu
- 40% số test ứng với 40% số điểm có: ~1 \le n \le 100~.
- 30% số test ứng với 30% số điểm có: ~100 < n \le 1000~.
- 30% số test ứng với 30% số điểm có: ~1000 < n \le 10^6~.
Ví dụ
Ví dụ 1
INPUT
8 5
8 2 0 5 7
OUTPUT
4
Giải thích: Ta có thể gán giá trị ~6~ cho phần tử có giá trị ~0~, khi đó dãy trở thành ~8, 2, 6, 5, 7~. Dễ thấy dãy con ~8, 6, 5, 7~ có các phần tử có giá trị liên tiếp nhau là ~5, 6, 7, 8~ và có độ dài ~4~ là dài nhất.
Bình luận