Sắp xếp bằng cách dời đầu cuối
Đề bài
Mô tả
Cho mảng gồm số nguyên (mảng có thể chứa các phần tử bằng nhau). Bạn được phép thực hiện hai loại thao tác:
- Chọn một chỉ số bất kỳ () và chuyển phần tử lên đầu mảng.
- Chọn một chỉ số bất kỳ () và chuyển phần tử xuống cuối mảng.
Ví dụ với , : sau khi áp dụng thao tác loại 1 lên phần tử thứ hai, mảng trở thành ; tiếp đó áp dụng thao tác loại 2 lên phần tử thứ hai, mảng trở thành .
Bạn có thể thực hiện các thao tác thuộc hai loại trên với số lần tùy ý, theo thứ tự tùy ý.
Hãy tìm số thao tác ít nhất cần thực hiện để mảng được sắp xếp không giảm, tức là .
Dữ liệu vào
- Dòng đầu chứa một số nguyên : số lượng bộ dữ liệu.
- Mỗi bộ dữ liệu gồm hai dòng:
- Dòng thứ nhất chứa số nguyên : kích thước 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 trên một dòng một số nguyên là số thao tác ít nhất cần thực hiện.
Ràng buộc
- Tổng của trên tất cả các bộ dữ liệu không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 5 4 7 2 2 9 5 3 5 8 1 7 5 1 2 2 4 5 |
2 2 0 |
Bộ 1: chuyển hai số 2 lên đầu mảng, . Bộ 2: chuyển số 1 lên đầu và số 8 xuống cuối, . Bộ 3: mảng đã được sắp xếp sẵn. |
| 5 2 0 1 3 0 1 0 4 0 1 0 0 4 0 1 0 1 4 0 1 0 2 |
0 1 1 1 1 |
Bộ 2: chuyển số 1 xuống cuối, . Bộ 4: giữ nguyên , , và chuyển xuống cuối. |
| 1 20 16 15 1 10 0 14 0 10 3 9 2 5 4 5 17 9 10 20 0 9 |
16 | Nhiều nhất chỉ giữ nguyên được 4 phần tử, chẳng hạn hai số 5 ở vị trí 12, 14 rồi hai số 9 ở vị trí 16, 20; 16 phần tử còn lại đều nhỏ hơn hoặc bằng 5 (đưa lên đầu) hoặc lớn hơn hoặc bằng 9 (đưa xuống cuối). Lưu ý mảng này có dãy con không giảm dài tới 7 phần tử, nhưng không thể giữ nguyên cả 7. |
Bình luận