Một nhà máy chế biến hoa quả đang chế biến một số sản phẩm từ táo. Nhà máy này đã có một dây chuyền sản xuất gồm nhiều công đoạn. Trong công đoạn đầu tiên, có N quả táo với trọng lượng đã biết được đưa ngẫu nhiên lên băng chuyền thành hàng dọc và được đánh số từ 1 đến N. Chúng được ngầm phân thành M=[N/K] đoạn, mỗi đoạn gồm đúng K quả (N là bội của K). Các đoạn này cũng được đánh số từ 1 đến M, kể từ đầu băng chuyền. Do yêu cầu kỹ thuật, chúng cần được sắp xếp lại sao cho:
+ Đoạn 1 sẽ gồm K quả có trọng lượng lớn nhất trong số K quả có mặt trên dây băng chuyền.
+ Nếu M>1 thì đoạn thứ i (i=2, 3, …, M) sẽ là K quả táo lớn nhất trong các quả táo còn lại (không có mặt trong các đoạn từ 1 đến i-1).
Một Robot sẽ di chuyển dọc theo băng chuyền để thực hiện yêu cầu kỹ thuật ở trên. Mỗi thao tác của Robot sẽ gồm việc rút ra khỏi băng chuyền 1 quả táo (các quả táo còn lại được dồn lại) rồi chèn quả táo này vào vị trí thích hợp trên băng chuyền (bao gồm cả vị trí đầu và cuối dãy)
Yêu cầu: Hãy viết chương trình tính xem Robot cần thực hiện ít nhất bao nhiêu thao tác để xếp lại số táo trên băng chuyền theo đúng yêu cầu kỹ thuật.
Dữ liệu:
+ Dòng đầu gồm 2 số nguyên N và K (1≤K≤N≤5000);
+ Dòng thứ 2 ghi N số nguyên Wi (1≤Wi ≤1000, i=1,2,…,N) là số đơn vị trọng lượng của quả táo thứ i.
Các số trên 1 dòng đều được ghi cách nhau ít nhất 1 ký tự trắng.
Kết quả: Ghi duy nhất một số nguyên là số thao tác ít nhất mà Robot cần thực hiện.
Ví dụ:
Input | Output | Input | Output | |
---|---|---|---|---|
6 2 7 3 2 5 9 1 | 2 | 6 2 7 8 9 5 3 5 | 0 |
Code tích cực |
---|
Trong 24h |
|
Trong 7 ngày |
|
Trong 30 ngày |
|
Thống kê |
---|
AC/Sub: 97887/180710 Pascal: 17121 C++: 130348 Python: 33199 Lượt xem/tải tests: 38877 |