ĐOÀN KẾT

Nguồn: Olympic 30.4 - K10 năm 2021

Câu chuyện cổ tích về người cha và bó đũa nhắc nhở chúng ta rằng: có đoàn kết thì mới có sức mạnh.

Bạn có ~n~ bó đũa trên một hàng ngang, bó đũa thứ ~i~ có sức mạnh là ~a_i~. Tại mỗi bước, bạn có thể buộc hai bó đũa nằm cạnh nhau và có sức mạnh giống nhau để tạo thành một bó đũa có sức mạnh mới lớn hơn 1 đơn vị so với ban đầu. Bó đũa mới chiếm vị trí của hai bó đũa cũ, và thứ tự của các bó đũa được giữ nguyên.

Để thể hiện tinh thần đoàn kết ở mức cao nhất, bạn muốn lặp lại thao tác trên nhiều lần nhất có thể. Nói cách khác, bạn muốn số lượng bó đũa còn lại là tối thiểu.

Yêu cầu: Hãy viết chương trình tính số lượng bó đũa còn lại tối thiểu có thể đạt được.

**Dữ liệu: **

  • Dòng đầu chứa số nguyên ~n~ ~(1≤n≤10^5 )~, số lượng bó đũa ban đầu.
  • Dòng tiếp theo chứa ~n~ số nguyên, số nguyên thứ ~i~ là ~a_i~ cho biết sức mạnh ban đầu của bó đũa thứ ~i~ ~(1≤a_i≤ 10^9)~.

Kết quả: Ghi duy nhất một số nguyên là số bó đũa tối thiểu có thể đạt được.

Ví dụ:

Input 1

6
1 1 2 2 2 1 

Output 1

2 

Input 2

5
1 1 1 2 1 

Output 2

3 

**Ràng buộc: **

  • 30% số điểm của bài tương ứng với các test có ~n ≤ 400~
  • 30% số điểm khác của bài tương ứng với các test ~a_i≤ 20~

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. gialinh_10van (23/25)
  2. phamnhi (21/77)
  3. hoangha_10van (15/21)
Trong 7 ngày
  1. phamnhi (126/299)
  2. ilpnvm (68/110)
  3. dambinh (61/97)
Trong 30 ngày
  1. ducchinh (184/249)
  2. hienpham (183/244)
  3. bichngoc (179/266)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 37787

Lưu Hải Phong - 2020
[email protected]