Thao tác trên hoán vị

View as PDF

Time limit: 1.0s , Memory limit: 256M , Points: 2000 (partial)

Cho dãy hoán vị p_1,p_2,...,p_n và một số nguyên k. Hãy thực hiện thao tác sau đây với số lần ít nhất để đưa các phần tử của dãy hoán vị trở thành bằng nhau từng đôi một:

  • Chọn hai chỉ số lr (1 \le l \le r \le n) thỏa mãn r-l+1=k, gọi m=min([p_l,p_{l+1},...,p_r]), gán p_i=m với mọi l \le i \le r.

Input

  • Dòng đầu tiên chứa hai số nguyên nk (2 \le k \le n \le 10^5).
  • Dòng thứ hai chứa n số nguyên của dãy hoán vị p (1 \le p_i \le n).
  • Dữ liệu đảm bảo dãy p là một dãy hoán vị hợp lệ.

Output

  • In ra số lần thực hiện thao tác ít nhất.

Examples

Sample Input 1
4 3
2 3 4 1
Sample Output 1
2
Sample Input 2
3 3
2 1 3
Sample Output 2
1

Scoring

  • Subtask 1 - 1000 điểm: k=2
  • Subtask 2 - 1000 điểm: Không có ràng buộc gì thêm

Notes

Trong ví dụ thứ nhất, thực hiện 2 lần thao tác như sau:

  • Chọn l=2,r=4, khi đó min([p_2,p_3,p_4])=1 và dãy p trở thành [2,1,1,1].
  • Chọn l=1,r=3, khi đó min([p_1,p_2,p_3])=1 và dãy p trở thành [1,1,1,1].

Trong ví dụ thứ hai, thực hiện 1 lần thao tác như sau:

  • Chọn l=1,r=3, khi đó min([p_1,p_2,p_3])=1 và dãy p trở thành [1,1,1].

Comments