[Hà Nội - TST - 2024] Bài 3: Gộp dãy số
Xem dạng PDF
Gửi bài giải
Điểm:
10,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
1G
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT
Cho dãy số gồm ~N~ số nguyên dương ~a_1, a_2, \dots, a_N~. Thao tác gộp dãy số lại như sau: chọn hai phần tử liên tiếp ~a_i~ và ~a_{i+1}~ có cùng giá trị là ~x~, rồi xoá ~a_{i+1}~ khỏi dãy và tăng ~a_i~ lên ~1~ thành ~x+1~, sau đó các phần tử còn lại của dãy được gộp lại.
Hãy tìm cách thực hiện liên tục các thao tác như trên để được dãy có ít phần tử nhất.
INPUT
- Dòng đầu tiên chứa số nguyên dương ~N \ (1\le N\le 10^6)~;
- Dòng thứ hai chứa ~N~ số nguyên ~a_i~ ~(1\le a_i\le 10^9; \ 1\le i\le N)~.
OUTPUT
Ghi ra số lượng phần tử ít nhất có thể của dãy sau khi thực hiện liên tục các thao tác như trên để được dãy có ít phần tử nhất.
SAMPLE INPUT
4
3 2 2 2
SAMPLE OUTPUT
2
Các bước gộp dãy số như sau:
- Dãy ban đầu: ~3 \ \underline{2} \ \underline{2} \ 2~
- Gộp hai số ở vị trí ~2~ và ~3~ thì dãy số là: ~\underline{3} \ \underline{3} \ 2~
- Gộp hai số ở vị trí ~1~ và ~2~ thì dãy số là: ~4 \ 2~
SUBTASKS
- Có ~20\%~ số test ứng với ~20\%~ số điểm thoả mãn: ~N\le 10; \ a_i\le 30~;
- ~20\%~ số test khác ứng với ~20\%~ số điểm thoả mãn: ~N\le 200; \ a_i\le 30~;
- ~20\%~ số test khác ứng với ~20\%~ số điểm thoả mãn: ~N\le 2000; \ a_i\le 30~;
- ~10\%~ số test khác ứng với ~10\%~ số điểm thoả mãn: ~N\le 2000~;
- ~10\%~ số test khác ứng với ~10\%~ số điểm thoả mãn: ~a_i\le 30~;
- ~20\%~ số test khác ứng với ~20\%~ số điểm không có ràng buộc gì thêm.
Bình luận