Một hình trên mặt số tròn được mô tả bởi n vạch tại các góc nguyên từ 0 đến 3.59999⋅105. Ta được phép quay đồng thời toàn bộ hình thứ nhất một góc bất kỳ theo modulo 3.6⋅105. Hãy xác định có thể làm tập vạch của hai hình trùng nhau hoàn toàn hay không.
Input
Dòng đầu chứa n.
Dòng thứ hai chứa n góc của hình thứ nhất.
Dòng thứ ba chứa n góc của hình thứ hai.
Output
In possible nếu tồn tại một phép quay phù hợp; nếu không, in impossible.
Constraints
2≤n≤2⋅105.
Mỗi góc thuộc [0,3.59999⋅105].
Trong cùng một hình, không có hai vạch trùng góc.
Scoring
Subtask 1 (50% số điểm): n≤2000.
Subtask 2 (50% số điểm): Không có giới hạn bổ sung.
Giải thích: Quay hình thứ nhất thêm 45000 đơn vị làm bốn góc lần lượt thành 45000,135000,225000,315000, đúng bằng hình thứ hai.
Lời giải tóm tắt
Phân tích: Quyết định hai tập n góc trên đường tròn 360000 đơn vị có thể trùng hoàn toàn sau một phép quay hay không.
Phân tích: Sắp xếp mỗi tập, tạo dãy n khoảng cách liên tiếp có cả khoảng cách cuối-đầu, rồi dùng KMP kiểm tra dãy thứ hai có xuất hiện trong hai bản nối của dãy thứ nhất (chỉ 2n-1 phần tử) hay không.
Thuật toán: 1. Đọc và chuyển dữ liệu về biểu diễn nêu trong phần phân tích. 2. Tính prefix-function cho mẫu hoặc dãy cần so khớp. 3. Quét dữ liệu bằng các failure link; mỗi khi đạt trạng thái đầy đủ, cập nhật kết quả đúng theo contract của bài. 4. In kết quả theo đúng thứ tự và quy tắc trường hợp biên đã nêu.
Chứng minh: Phép quay bảo toàn các khoảng cách tuần tự và chỉ đổi nơi bắt đầu đọc dãy vòng. Ngược lại, nếu hai dãy khoảng cách khớp sau một phép xoay chỉ số, căn chỉnh một vạch đầu rồi cộng dồn cho thấy mọi vạch còn lại cũng trùng; vì thế kiểm tra phép xoay dãy là tương đương.
Độ phức tạp: O(n log n) thời gian do sắp xếp, O(n) bộ nhớ.