Ngọc trai trên hàng
Đề bài
Mô tả
Có viên ngọc trai xếp thành một hàng, đánh số từ đến từ trái sang phải. Viên ngọc thứ có loại .
Một đoạn là một dãy các viên ngọc liên tiếp. Một đoạn được gọi là tốt nếu trong đoạn đó có ít nhất hai viên ngọc cùng loại.
Hãy chia hàng ngọc trai thành số lượng đoạn tốt nhiều nhất có thể. Mỗi viên ngọc phải thuộc đúng một đoạn của cách chia.
Dữ liệu vào
- Dòng đầu chứa số nguyên : số viên ngọc trai.
- Dòng thứ hai chứa số nguyên : loại của từng viên ngọc.
Dữ liệu ra
- Nếu không tồn tại cách chia hợp lệ, in ra một số .
- Ngược lại, dòng đầu in số nguyên : số đoạn nhiều nhất. Mỗi dòng trong dòng tiếp theo in hai số nguyên (): chỉ số viên ngọc trái nhất và phải nhất của đoạn thứ .
Cách chia phải hợp lệ: mỗi viên ngọc thuộc đúng một đoạn và mọi đoạn đều là đoạn tốt. Nếu có nhiều đáp án tối ưu, in ra một đáp án bất kỳ. Các đoạn có thể được in theo thứ tự bất kỳ.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 1 2 3 4 1 |
1 1 5 |
Chỉ có một đoạn tốt duy nhất là toàn bộ hàng (hai viên loại 1 ở hai đầu). |
| 7 1 2 1 3 1 2 1 |
2 1 3 4 7 |
Đoạn có hai viên loại 1; đoạn có hai viên loại 1. Không thể chia thành nhiều hơn 2 đoạn tốt. |
| 5 1 2 3 4 5 |
-1 | Mọi viên đều khác loại nên không có đoạn tốt nào. |
Bình luận