Huấn luyện binh sĩ
Đề bài
Mô tả
Một công trình phòng thủ đang có đúng binh sĩ. Mỗi binh sĩ có một cấp bậc là số nguyên từ đến ( là binh nhì, là tướng). Cấp bậc càng cao thì binh sĩ chiến đấu càng giỏi, nên người chơi muốn đưa toàn bộ binh sĩ lên cấp bậc cao nhất là .
Muốn lên cấp thì phải huấn luyện, và mỗi buổi huấn luyện tốn đúng một đồng tiền vàng. Cả binh sĩ đều tham gia mọi buổi huấn luyện.
Cuối mỗi buổi huấn luyện, cấp bậc thay đổi như sau: trước hết chia toàn bộ binh sĩ thành các nhóm sao cho mỗi nhóm gồm những binh sĩ có cùng cấp bậc và số nhóm là ít nhất có thể (tức là mỗi cấp bậc đang xuất hiện tạo thành đúng một nhóm). Sau đó, trong mỗi nhóm có cấp bậc nhỏ hơn , đúng một binh sĩ được tăng cấp bậc thêm . Các nhóm đã đạt cấp bậc thì không thay đổi. Mọi thay đổi này diễn ra đồng thời, dựa trên trạng thái đầu buổi huấn luyện.
Biết cấp bậc hiện tại của binh sĩ, hãy xác định cần bao nhiêu đồng tiền vàng để đưa tất cả binh sĩ lên cấp bậc .
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và : số binh sĩ và số cấp bậc.
- Dòng thứ hai chứa số nguyên theo thứ tự không giảm, trong đó là cấp bậc của binh sĩ thứ .
Dữ liệu ra
In ra một số nguyên duy nhất: số đồng tiền vàng cần thiết để đưa mọi binh sĩ lên cấp bậc .
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 4 1 2 2 3 |
4 | Các cấp bậc biến đổi qua từng buổi: 1 2 2 3 → 2 2 3 4 → 2 3 4 4 → 3 4 4 4 → 4 4 4 4. Ở buổi đầu, ba nhóm cấp 1, 2, 3 mỗi nhóm thăng một người, nên hai binh sĩ cấp 2 chỉ có một người lên cấp 3. |
| 4 3 1 1 1 1 |
5 | 1 1 1 1 → 1 1 1 2 → 1 1 2 3 → 1 2 3 3 → 2 3 3 3 → 3 3 3 3. Nhóm cấp 3 đã đạt nên đứng yên. |
| 1 5 1 |
4 | Chỉ có một binh sĩ, mỗi buổi lên đúng một cấp nên cần buổi. |
Bình luận