Cho dãy số A có n phần tử, phần tử thứ i có giá trị là a_i.
Bạn có thể thực hiện hai thao tác sau:
- Chọn 1 vị trí i (1\le i\le n) và chuyển a_i về đầu dãy và dồn các phần tử phía sau lên trước. (i.e. xoay vòng dãy từ a_1 đến a_i theo chiều hướng về phía cuối dãy, sau thao tác dãy sẽ trở thành a_i, a_1, a_2, ..., a_{i - 1}, a_{i + 1}, a_{i + 2}, ..., a_n)
- Chọn 1 vị trí i (1\le i\le n) và chuyển a_i về cuối dãy và dồn các phần tử phía sau lên trước. (i.e. xoay vòng dãy từ a_i đến a_n theo chiều hướng về phía đầu dãy, sau thao tác dãy sẽ trở thành a_1, a_2, ..., a_{i - 1}, a_{i + 1}, a_{i + 2}, ..., a_n, a_i)
Yêu cầu: Tìm số thao tác nhỏ nhất tạo ra một dãy mà 1\le i\le n-1 thì a_i \ge a_{i + 1} (i.e. dãy thu được là dãy không tăng).
Input và Output
Input (bàn phím
)
- Dòng đầu tiên gồm một số nguyên dương n là số lượng phần tử (1 \le n \le 3 \times 10^5).
- Dòng thứ hai gồm n số nguyên dương a_1, a_2, ..., a_n (1 \le a_i \le 3 \times 10^5).
Output (màn hình
)
- In ra số thao tác nhỏ nhất.
Sample 1
Input (bàn phím
)
4
2 6 1 4
Output (màn hình
)
2
Note
- Chuyển phần tử thứ 1 về cuối dãy được A = \{6, 1, 4, 2\}.
- Chuyển phần tử thứ 2 về cuối dãy được A = \{6, 4, 2, 1\} (thỏa mãn).
Sample 2
Input (bàn phím
)
4
3 1 2 4
Output (màn hình
)
2
Sample 3
Input (bàn phím
)
4
1 1 2 2
Output (màn hình
)
2
Bình luận