HSG12 Hà Nội 2026 - Chia nhóm

Xem dạng PDF

Gửi bài giải

Điểm: 70,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Cho dãy số gồm ~N~ số nguyên ~A_1, A_2, \dots, A_N~. Cần chia dãy thành các nhóm thoả mãn:

  • Mỗi nhóm chứa ít nhất một phần tử;

  • Mỗi nhóm là các phần tử liên tiếp;

  • Mỗi phần tử thuộc đúng một nhóm;

  • Không có giá trị nào xuất hiện trong nhiều hơn ~2~ nhóm.

Ví dụ: ~A = [1, 2, 1, 1, 1, 2]~, có thể chia thành ~4~ nhóm ~[1] \mathbin{|} [2] \mathbin{|} [1, 1, 1] \mathbin{|} [2]~. Cách chia không đúng là ~[1] \mathbin{|} [2] \mathbin{|} [1, 1] \mathbin{|} [1, 2]~ vì số ~1~ xuất hiện trong ~3~ nhóm.

Yêu cầu: Hãy tìm cách chia dãy số ra được nhiều nhóm nhất. In ra số lượng nhóm nhiều nhất có thể chia thoả mãn yêu cầu.

Input

  • Dòng đầu tiên chứa số nguyên dương ~N~ ~(1 \le N \le 2 \times 10^5)~;

  • Dòng thứ hai chứa ~N~ số nguyên ~A_1, A_2, \dots, A_N~ ~(\lvert A_i \rvert \le 10^9)~.

Output

  • Một số nguyên dương là số lượng nhóm nhiều nhất chia được.

Scoring

Subtask Điểm Ràng buộc
1 ~30\%~ ~N \le 20~
2 ~30\%~ Dãy số đã cho theo thứ tự không giảm
3 ~20\%~ ~N \le 2000~
4 ~20\%~ Không có giới hạn gì thêm

Sample Input 1

5
1 2 1 2 1

Sample Output 1

3

Notes

Có thể chia dãy thành ba nhóm hợp lệ là ~[1] \mathbin{|} [2] \mathbin{|} [1, 2, 1]~. Giá trị ~1~ và ~2~ đều chỉ xuất hiện trong hai nhóm. Không thể chia dãy thành bốn nhóm hợp lệ.

Cách chia khác cũng thoả mãn: ~[1, 2, 1] \mathbin{|} [2] \mathbin{|} [1]~.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.