Làm cho mảng tốt
Đề bài
Mô tả
Cho một mảng gồm số nguyên.
Một mảng độ dài được gọi là tốt nếu ta có thể tạo ra một mảng không giảm () từ nó bằng cách lặp lại lần thao tác sau (ban đầu rỗng):
- Chọn phần tử đầu tiên hoặc phần tử cuối cùng của , xoá nó khỏi và thêm nó vào cuối mảng .
Ví dụ, mảng là tốt: lần lượt lấy , rồi phần tử cuối, rồi phần tử cuối, rồi phần tử đầu, rồi phần tử đầu, rồi phần tử cuối, rồi phần tử còn lại, ta thu được là mảng không giảm.
Mảng gồm đúng một phần tử luôn là mảng tốt.
Hãy tìm độ dài nhỏ nhất của một tiền tố của cần xoá đi để phần còn lại là một mảng tốt. Lưu ý rằng độ dài này có thể bằng .
Bạn phải trả lời bộ dữ liệu độc lập.
Dữ liệu vào
- Dòng đầu chứa số nguyên là số bộ dữ liệu.
- Với mỗi bộ dữ liệu:
- Dòng đầu chứa số nguyên là độ dài mảng .
- Dòng thứ hai chứa số nguyên .
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra một dòng chứa một số nguyên: độ dài nhỏ nhất của tiền tố cần xoá để phần còn lại là mảng tốt.
Ràng buộc
- Tổng trên tất cả các bộ dữ liệu không vượt quá
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 4 1 2 3 4 7 4 3 3 8 4 5 2 3 1 1 1 7 1 3 1 4 5 3 2 5 5 4 3 2 3 |
0 4 0 2 3 |
Bộ 1: mảng đã tốt nên không cần xoá. Bộ 2: xoá 4 phần tử đầu còn [4, 5, 2] là mảng tốt, xoá ít hơn thì không được. Bộ 3: mọi phần tử bằng nhau nên mảng đã tốt. |
| 8 2 1 1 2 2 1 2 1 2 3 2 1 2 3 1 2 1 2 1 200000 2 200000 1 5 5 5 5 1 5 |
0 0 0 1 0 0 0 3 |
Mọi mảng độ dài đều tốt. Bộ 4: [2, 1, 2] không tốt vì có "thung lũng" ở giữa, xoá phần tử đầu còn [1, 2]. Bộ 8: [5, 5, 5, 1, 5] phải xoá 3 phần tử đầu, còn [1, 5]. |
Bình luận