Sắp xếp bằng chu trình độ dài 3
Đề bài
Mô tả
Cho một mảng gồm số nguyên với . Bạn muốn sắp xếp mảng theo thứ tự không giảm.
Bạn chỉ được phép dùng một loại thao tác duy nhất, gọi là chu trình độ dài 3 (3-cycle): chọn ba chỉ số phân biệt () rồi đồng thời chuyển tới vị trí , tới vị trí , và tới vị trí (các phần tử khác giữ nguyên).
Ví dụ với mảng , chọn thì mảng trở thành .
Bạn được dùng số thao tác tùy ý (có thể bằng ). Hãy xác định xem có thể sắp xếp mảng thành không giảm hay không.
Dữ liệu vào
- Dòng đầu chứa số nguyên — số bộ dữ liệu.
- Với mỗi bộ dữ liệu:
- Dòng đầu chứa số nguyên — độ 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 "YES" nếu có thể sắp xếp mảng bằng các chu trình độ dài 3, ngược lại in ra "NO". Có thể in chữ hoa hoặc chữ thường tùy ý.
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 |
|---|---|---|
| 7 1 1 2 2 2 2 2 1 3 1 2 3 3 2 1 3 3 3 1 2 4 2 1 4 3 |
YES YES NO YES NO YES YES |
Với mảng , dùng chu trình là sắp xếp xong. Với , áp dụng rồi . Mảng độ dài nên không thực hiện được thao tác nào, mà nó chưa sắp xếp nên đáp án là NO. |
| 3 3 3 2 1 4 2 1 3 4 5 1 1 2 2 3 |
NO NO YES |
là một hoán vị lẻ nên không thể; chỉ đổi chỗ hai phần tử (hoán vị lẻ) nên cũng không thể; mảng cuối có phần tử lặp lại nên luôn sắp xếp được. |
Bình luận