Mã hóa dãy số
Đề bài
Mô tả
Ngày nay, lĩnh vực an ninh mạng đang dần trở thành một lĩnh vực thiết yếu trong việc bảo mật an toàn thông tin trên toàn thế giới. Tuấn là một kỹ sư an ninh mạng và rất đam mê khám phá các bài toán về mã hóa bảo mật. Cậu đang quan tâm đến bài toán mã hóa một dãy số với các phần tử là số nguyên dương không quá . Cậu thử nghiệm việc mã hóa bằng cách viết ra tất cả các dãy hậu tố của dãy . Cụ thể, với mỗi , Tuấn viết ra dãy . Sau đó, cậu sắp xếp các dãy này tăng dần theo thứ tự từ điển. Cuối cùng, cậu ghi lại độ dài của các dãy theo thứ tự đã sắp xếp, thu được dãy và gọi đây là dãy đặc trưng của .
Ví dụ, với dãy thì Tuấn sẽ viết ra dãy: ; ; ; ; ; ; . Sau khi sắp xếp tăng dần theo thứ tự từ điển, Tuấn thu được: . Cuối cùng, Tuấn ghi lại độ dài các dãy theo thứ tự đó và thu được dãy đặc trưng của là .
Nhắc lại, dãy được gọi là đi trước dãy theo thứ tự từ điển nếu một trong hai điều kiện sau thỏa mãn:
- Tồn tại sao cho và ;
- và .
Bây giờ Tuấn muốn biết khả năng giải mã ngược lại ra dãy nếu chỉ biết số , dãy và phương pháp xây dựng dãy . Tuấn nhận ra rằng có thể tồn tại nhiều dãy có các phần tử là các số nguyên dương không quá mà sau khi thực hiện phương pháp mã hóa như trên có thể cho ra cùng một dãy đặc trưng .
Tiếp tục quá trình thử nghiệm, Tuấn thực hiện phép biến đổi liên tiếp trên dãy . Với mỗi phép biến đổi, cậu sẽ chọn hai phần tử của dãy hiện tại và đổi giá trị cho nhau, sau đó đếm số dãy thỏa mãn dãy đặc trưng vừa được biến đổi. Sau mỗi phép biến đổi, dãy được cập nhật.
Yêu cầu: Cho biết , dãy và các phép biến đổi của Tuấn. Trước lần biến đổi đầu tiên và sau mỗi lần biến đổi của Tuấn trên dãy , hãy tính số lượng dãy có phần tử, các phần tử là các số nguyên dương không quá , sao cho dãy đặc trưng của là dãy .
Dữ liệu vào
- Dòng đầu tiên chứa ba số nguyên .
- Dòng thứ hai chứa số nguyên dương . Dữ liệu đảm bảo dãy là một hoán vị của số tự nhiên .
- Mỗi dòng trong số dòng tiếp theo chứa hai số nguyên dương khác nhau mô tả một phép biến đổi của Tuấn với ý nghĩa là đổi giá trị của và cho nhau.
Các số trên cùng một dòng cách nhau bởi dấu cách.
Dữ liệu ra
Gồm dòng, mỗi dòng là phần dư trong phép chia cho của số lượng dãy tính được cho dãy ban đầu và cho dãy sau mỗi phép biến đổi theo thứ tự đầu vào.
Ràng buộc
- ; .
- là một hoán vị của .
- Mỗi phép biến đổi: , .
Subtasks
- Subtask 1 ( số điểm): .
- Subtask 2 ( số điểm): .
- Subtask 3 ( số điểm): và là dãy tăng dần hoặc giảm dần.
- Subtask 4 ( số điểm): .
- Subtask 5 ( số điểm): Không có ràng buộc nào thêm.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 3 2 3 1 2 2 3 1 2 |
4 4 1 |
Các dãy có dãy đặc trưng là: ; ; ; . Các dãy có dãy đặc trưng là: ; ; ; . Các dãy có dãy đặc trưng là: . |
| 7 4 2 3 6 7 4 2 1 5 3 7 1 6 |
1 1 8 |
Ví dụ bổ sung (không có trong đề gốc). Với , dãy chỉ ứng với đúng dãy ở đề bài. Sau phép đổi thứ nhất, chỉ ứng với . Sau phép đổi thứ hai, ứng với dãy, chẳng hạn . |
Bình luận