trang chủ / bài tập / soltrain

Huấn luyện binh sĩ

Đề bài

Mô tả

Một công trình phòng thủ đang có đúng n binh sĩ. Mỗi binh sĩ có một cấp bậc là số nguyên từ 1 đến k (1 là binh nhì, k 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à k.

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ả n 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 k, đúng một binh sĩ được tăng cấp bậc thêm 1. Các nhóm đã đạt cấp bậc k 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 n 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 k.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk: số binh sĩ và số cấp bậc.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an theo thứ tự không giảm, trong đó ai là cấp bậc của binh sĩ thứ i.

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 k.

Ràng buộc

  • 1n,k100
  • 1aik
  • a1a2an

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 k 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 51=4 buổi.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0