Làm k phần tử bằng nhau
Đề bài
Mô tả
Cho dãy gồm phần tử và số nguyên với .
Bạn muốn thu được ít nhất phần tử có cùng giá trị trong dãy . Ở mỗi nước đi, bạn được thực hiện đúng một trong hai thao tác sau:
- Chọn một phần tử nhỏ nhất hiện tại của dãy và tăng giá trị của nó lên (chính xác hơn, nếu là giá trị nhỏ nhất trong thì bạn chọn chỉ số sao cho và gán ).
- Chọn một phần tử lớn nhất hiện tại của dãy và giảm giá trị của nó đi (chính xác hơn, nếu là giá trị lớn nhất trong thì bạn chọn chỉ số sao cho và gán ).
Hãy tính số nước đi tối thiểu để trong dãy có ít nhất phần tử bằng nhau.
Dữ liệu vào
- Dòng đầu tiên chứa hai số nguyên và .
- Dòng thứ hai chứa số nguyên .
Dữ liệu ra
- In ra một số nguyên duy nhất: số nước đi tối thiểu cần thực hiện để có ít nhất phần tử bằng nhau trong dãy.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 6 5 1 2 2 4 2 3 |
3 | Tăng phần tử có giá trị lên (1 nước đi), giảm phần tử có giá trị xuống rồi xuống (2 nước đi). Tổng cộng nước đi, ta được dãy có phần tử bằng . |
| 7 5 3 3 2 1 1 1 3 |
4 | Tăng cả ba phần tử lên mất nước đi, sau đó giảm một phần tử xuống mất nước đi. Dãy thu được có ít nhất phần tử bằng . |
Bình luận